攻防演练-靶机配置-渗透测试-简单SQL注入

2021-10-30 杰克 安全

       接上篇,在攻防物理环境搭建完成后就可以安装配置靶机系统了。如果要做渗透测试,我一直都比较中意DVWA靶机系统。可以做暴力破解、命令注入、CSRF、文件上传、SQL注入、弱session、XSS、安全策略(CSP)绕过、JavaScript攻击等各种渗透测试。通过DVWA靶机能理解各种漏洞的底层原理并找出防御方法,非常实用
DVWA的github地址:https://github.com/digininja/DVWA
dvwa-info.png
0x00

要使用DVWA需要配置lamp环境,我懒得一个个安装。在虚机装好centos8.4后直接使用宝塔BT面板一键部署好了lamp环境。宝塔BT面板官网:https://www.bt.cn  环境配置好后,在BT面板创建一个dvwa.com网站和同名数据库

dvwa.com.png

dvwa-sql.png
下载DVWA的压缩包并解压到刚建立的dvwa.com网站目录下,然后将网站目录下的config/config.inc.php.dist文件复制并重命名为config.inc.php  如果不做这一步,直接浏览器打开网站会报config文件找不到错误

dvwa-err.png

文件config.inc.php复制好后打开编辑,将数据库密码改为刚刚在宝塔面板创建的数据库密码一致
config.png
还有一个reCAPTCHA key 需要去Google获取生成:https://www.google.com/recaptcha/admin/create  不方便科学上网的可以使用这个key直接填上即可
recaptcha_public_key                   6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg
recaptcha_private_key                  6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ
google-key.png
然后浏览器打开DVWA的setup页面,我这里修改了host文件解析的地址:dvwa.com/setup.php  默认情况下PHP的 allow_url_fopen  和  allow_url_include 没有开启,去宝塔面板配置PHP开启。其他有显示报错的根据提示修改开启即可。最后点击最下面的 Create / Reset Database 按钮自动配置数据库,完成后会自动跳转到登陆界面输入默认账号密码:admin / password 
dvwa-setup.png
在DVWA的主页面左边可以看到各种渗透测试类别。根据由易到难循序渐进的测试思路先点选左边的 DVWA Security 将测试级别改成Low并点击Submit提交,默认的impossible级别所有的漏洞都是关闭的。最高的High级别据说可用于攻防比赛
dvwa-level.png
0x01
靶机测试环境配置好了,下面测试SQL注入。在测试之前简单说下SQL注入原理。我们在浏览一个网站页面的时候如果有对数据进行查询等操作的时候是不会有页面直接给你敲 select  from  这样数据库命令的,查询的请求是通过一个个程序(比如asp、php、jsp等)实现的。这些程序通常将查询命令语句都写好,留下一个给你输入参数的变量。比如有一个query.php的程序,它负责执行数据库查询任务,假设这个query.php程序文件里有一段写好的数据库查询命令:
SELECT first_name, last_name FROM users WHERE user_id = '$id'   
如果query程序对输入的$id值过滤不严,当有人输入恶意参数就会发生SQL注入
inj.jpg
以上命令中 $id 是待输入的变量,也就是前端页面待输入的窗口。我们查看DVWA注入页面右下角的View Source按钮就能看到数据库查询程序的php源码
sou.png
正常情况下我们输入对应的ID号就可以返回相应的name字段

1.png

2.png

3.png

在MySQL命令行执行SELECT first_name, last_name FROM users WHERE user_id = 返回结果与上面一致

123.png

通过恶意输入 'or 1 = 1 or'爆出了所有账户

all-user.png

通过恶意输入1' order by 3# 报错,猜解出user表字段仅有2个字段

3#.png

通过union select联合查询获取了更多信息,通过 1' union select user,password from users#获取用户密码的MD5值,这个MD5值可以到一些在线MD5的网站解密
password-md5.png
通过 1' union select version(),@@version_compile_os# 获取数据库及操作系统版本
version.png
0x02
这种简单SQL注入基本上都是由于程序对SQL参数过滤不严导致,从程序上的解决方法有:
1、开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置
2、执行sql语句时使用addslashes进行sql语句转换
3、Sql语句书写尽量不要省略小引号和单引号
4、过滤掉sql语句中的一些关键字:update、insert、delete、select、*
5、提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的
6、Php配置文件中设置register_globals为off,关闭全局变量注册
7、控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中

标签: 漏洞 渗透 攻防渗透 安全 SQL注入 靶机 DVWA 渗透测试 数据库注入

发表评论:

Powered by emlog 京ICP备17037512-1 e-mail:jackhkyin@163.com QQ:393147796