在安卓系统上搭建DVWA和SQLI靶场

闲置的安卓手机或者平板放着也是放着, 不如拿来做LNMP服务器搭些服务, 比如搭建内网靶场。

安装Termux

  1. Termux: https://github.com/termux/termux-app/releases

  2. ZeroTermux: https://github.com/hanxinhao000/ZeroTermux/releases

自行选择是安装官方原汁原味的Termux还是更适合中国宝宝体质的ZeroTermux。

更换软件源

执行以下命令将Termux内置软件源替换为清华大学镜像源

1
2
sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main stable main@' $PREFIX/etc/apt/sources.list
pkg update && pkg upgrade -y

配置SSH

手机上敲命令太慢了, 推荐在手机上配置SSH服务器然后用电脑连接过去进行操作:

1
2
3
4
5
pkg install openssh -y
sshd # 启动ssh服务端
whoami # 查看用户名
ifconfig # 查看内网IP地址
passwd # 修改新密码用于电脑ssh连接

在电脑的终端中执行以下命令连接手机:

1
ssh [用户名]@[IP地址] -p 8022  # 替换为实际用户名和IP

安装nginx

1
2
3
4
5
pkg install nginx -y
nginx -v
nginx

curl -I 127.0.0.1:8080 # 能看到200状态码则说明服务器已运行

安装php-fpm

DVWA是使用PHP编写的, 而nginx服务器本身并不处理php文件, 它会把php文件的请求转发给php-fpm处理, 然后将处理结果返回给客户端。因此需要再安装php-fpm:

1
2
pkg install php-fpm -y
php-fpm -v

使用nano编辑$PREFIX/etc/nginx/nginx.conf文件, 在server块的location /块的index部分添加index.php, 然后再添加一个location块:

1
2
3
4
5
6
7
location ~ \.php$ {
root html;
fastcgi_pass unix:/data/data/com.termux/files/usr/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/data/com.termux/files/usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

重启nginx并测试php-fpm是否工作:

1
2
3
nginx -s reload # 重启nginx
echo "<?php phpinfo();?>" > $PREFIX/share/nginx/html/info.php # 创建测试文件
curl -I 127.0.0.1:8080/info.php # 能看到X-Powered-By响应头显示php的版本则说明服务已运行

安装MariaDB(MySQL)

MariaDB Server 的前身 MySQL 于 2009 年被 Oracle 收购时, MySQL 创始人 Michael “Monty” Widenius 出于对 Oracle 管理权的担忧而fork了该项目, 并将新项目命名为 MariaDB。 MySQL 以他的第一个女儿 My 命名, 而 MariaDB 则以他的第二个女儿 Maria 命名。

1
2
3
pkg install mariadb
mariadb --version # 或 mysql --version
nohup mysqld > $HOME/log/mariadb.log 2>&1 & # 将mysql守护进程挂到后台运行

克隆DVWA仓库并进行配置

1
2
3
pkg install git
git clone https://github.com/digininja/DVWA.git $PREFIX/share/nginx/html/dvwa
cp $PREFIX/share/nginx/html/dvwa/config/config.inc.php.dist $PREFIX/share/nginx/html/dvwa/config/config.inc.php

编辑DVWA配置文件$PREFIX/share/nginx/html/dvwa/config/config.inc.php, 修改db_user为root, db_password置空, 类似下面这样:

1
2
$_DVWA[ 'db_user' ]     = 'root';
$_DVWA[ 'db_password' ] = '';

完成配置后手机浏览器访问http://127.0.0.1:8080/dvwa/setup.php即可看到DVWA的设置页面, 点击底部的Create/Reset Database即可配置好数据库并进入DVWA的登录界面, 输入m默认用户名admin和密码password即可登录到DVWA:

alt text

默认情况下php的allow_url_include函数是禁用的, 这会影响到DVWA文件包含漏洞实验的正常进行, 因此需要启用此函数:

1
echo "allow_url_include = On" >> $PREFIX/lib/php.ini

修改完成之后需要重启php-fpm:

1
2
3
pgrep php-fpm
kill -9 [PID] # 将[PID]替换为上一条命令查询到的PID, 多个PID则用空格分隔
php-fpm # 再次启动php-fpm

此时再访问http://127.0.0.1:8080/dvwa/setup.php即可看到PHP function allow_url_include: Enabled:

alt text

内网中的其他设备要访问靶场只需将环回地址改为手机的内网地址即可。

克隆sqli仓库并进行配置

由于原版的sqli-labs的上一次更新提交已是2014年, 其内置的mysql_connect()函数已被php7+版本删除, 这导致了sqli-labs连接不上数据库, 推荐的解决方法是直接使用Sqli_Edited_Version这个修改了连接函数为受支持函数的复刻版:

1
2
git clone https://github.com/Rinkish/Sqli_Edited_Version.git $PREFIX/share/nginx/html/sqli
mv $PREFIX/share/nginx/html/sqli/sqlilabs/ $PREFIX/share/nginx/html/sqli/sqli && mv $PREFIX/share/nginx/html/sqli/sqli/* $PREFIX/share/nginx/html/sqli

执行以下命令修改配置文件:

1
sed -i "/^\$host = 'localhost';/c#\$host = 'localhost';\n\$host = '127.0.0.1';" $PREFIX/share/nginx/html/sqli/sql-connections/db-creds.inc

此时再用手机浏览器访问http://127.0.0.1:8080/sqli/sql-connections/setup-db.php即可自动创建好sqli-labs的数据库:

alt text

再回到主页http://127.0.0.1:8080/sqli/即可选关打靶了。

服务自启

要想启动手机的Termux的同时也启动sshd、nginx、mariadb、php-fpm, 需要再执行以下命令:

1
2
mkdir ~/log && echo -e "sshd\nnohup nginx > \$HOME/log/nginx.log 2>&1 &\nnohup mysqld > \$HOME/log/mariadb.log 2>&1 &\nnohup php-fpm > \$HOME/log/php-fpm.log 2>&1 &" >> ~/.bashrc
source ~/.bashrc

对于希望手机自启Termux应用, 由于不同定制安卓系统的操作方式皆有所不同, 这里不做解释, 请自行寻找相关设置。