获取cms 后台管理员账号密码方法
-
arp中间人攻击
-
弱口令
-
SQL注入
-
xss
-
数据库攻击
数据库攻击
敏感数据放在数据库中。
远程不允许登录
可以通过phpmyadmin进行登录
默认账号密码
root root
进入cms_user 得到账号密码
md5加密
e10adc3949ba59abbe56e057f20f883e
解密之后
随后使用账号密码进cms后台
口令爆破
-
用户名未知,密码未知
-
用户名已知,密码未知
-
用户名未知,密码已知
准备用户名字典和密码字典
常见用户名
手工爆破过于繁琐,借助工具实现。
burp suite
burpsuite 命令启动
通过BP抓到浏览器到服务器的流量
BP相当于中间人,转发数据包
进入proxy模块,启动自带浏览器,访问服务器
抓取登录流量
浏览器进行登录,proxy抓取数据包
因此想要做爆破,就需要重复发送登录数据包
将包发送到repeatr模块
包转到intruder模块
数据包自动发送,根据用户名和密码的已知情况添加变量
攻击模式选择Cluster bomb
选择变量,导入已有的列表
开始攻击
攻击结束后查看状态码即可知道所爆破出的账号密码
得出账号密码
SQL注入
-
数据库 :存储数据的仓库
-
SQL :结构化查询语言
登录数据库
phpmyadmin
关系型数据库
库名 --> 表名 -->列名 --> 数据
数据库练习
SQL注入五大手法
- 联合查询
- 报错注入
- 布尔盲注
- 延时注入
- 堆叠查询
万能用户名(用户名随意)
777' or 1=1 #
万能密码(用户名必须正确)
admin' or 1='1
漏洞原理
查看 /cms/admin/login.action.php
<?php
session_start ();
header('Content-Type: text/html; charset=utf-8');
include_once ("../include/config.inc.php");
if (isset ( $_POST ["username"] )) {
$username = $_POST ["username"];
} else {
$username = "";
}
if (isset ( $_POST ["password"] )) {
$password = $_POST ["password"];
} else {
$password = "";
}
//记住用户名
setcookie (username, $username,time()+3600*24*365);
if (empty($username)||empty($password)){
exit("<script>alert('用户名或密码不能为空!');window.history.go(-1)</script>");
}
$user_row = $db->getOneRow("select userid from cms_users where username = '".$username."' and password='".md5 ( $password ) ."'");
if (!empty($user_row )) {
setcookie (userid, $user_row ['userid'] );
header("Location: index.php");
}else{
exit("<script>alert('用户名或密码不正确!');window.history.go(-1)</script>");
}
?>
代码审计
- 通过post方式获取两个变量,分别赋值给 $username 和 $passward
- 判断用户名和密码是否为空
- 根据用户提交的账号和密码进行SQL查询
- 如果查询到userid的值,则登录成功
进入成功
由于没有做任何过滤,可以通过 $username
和 $passward
来影响原有sql语句结构达到sql注入目的