由于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!
前言
在一次渗透项目中遇到的一个比较典型的案例,通过sql注入、未授权、任意文件上传组合拳最终getshell,过程也比较有意思,因此记录了下来。在写该文章时,所有漏洞均已提交归属单位并协助完成修复。
接口泄漏
开局一个登陆框,登陆时也存在加密,弱口令也没办法爆破,没办法只有扫描一波目录。
果然,存在一个help的api接口泄漏。
未授权访问
获取所有的用户信息?这么贴心吗?访问一下试试
牛逼,假的,只有试试其他接口,看看通过id获取用户信息试一下,一般管理员id都为1
提示用户不存在,并没有未登录等权限相关的提示,说明存在未授权查询用户信息,这里可以通过遍历id来获取用户信息,但是通过尝试并没有遍历到用户信息,猜测userid应该是很长一串的字符串,尝试单引号看是否有报错。
SQL注入
舒服了,一个单引号提示异常,两个单引号提示用户不存在,存在注入
sqlmap一把梭,mysql,不是dba。
存在union注入,但是在跑表的时候,不知道怎么回事数据包返回404
不过问题不大,还有一个根据urserid获取用户的任务完成率的接口,同样存在注入,但是是个时间盲注。
但是在sqlmap跑用户信息的时候全是空白,但实际上是有数据的
当时就陷入了沉思,一直没搞懂为什么,看了语句也是正常的,最后想到可以通过userid获取用户信息,可能会有用户名和密码,所以就只跑了userid这一个字段,果然,跑出了几个userid
尝试用这些userid获取信息,发现用户名是中文的,所以sqlmap直接跑跑不出来,需要编码过后才行
这里接口是没有直接返回密码的,使用sqlmap同时跑userid和passwd字段,这样就可以使用userid获取username,这样用户名和密码都有了,但是时间盲注,跑的太慢了,跑了几个passwd都解不出来,这里知道了用户信息的结构,直接通过新增用户接口,添加一个用户。
成功登陆了,但是没有功能点
可能是没添加权限,正好存在获取权限组的接口,访问获取所有RoleId
直接通过编辑用户接口添加所有权限
getshell
既然该系统存在sql注入和未授权,猜测肯定有任意文件上传,要上传shell,肯定要找上传点,所以其他功能直接不用看,这时候首当其冲的就是通知公告功能点,肯定有上传功能
果然,没有任何过滤,直接拿下
目标不出网,iis权限,想办法提个权
服务器是server 2016的,试了好多提权工具都提不了,最后发现可以使用PrinterNotifyPotato.exe提权
直接导出hash,但是hash解不出来,开启受限管理员,pth直接上远程桌面开始翻文件
由于种种原因,内网就不打了,点到为止,下机!
原文始发于微信公众号(不秃头的安全):渗透实战 | 组合拳从0-1 Getshell过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论