测试发现当匹配union select的时候,无法匹配上,而匹配union%20select的时候可以,说明在匹配规则的时候没有URL解码。
suricata中的uri有两种:原始raw_uri与标准化normalized uri
以空格为例,空格就是normalized uri,而20%就是raw_uri。raw_uri和normalized uri的缓冲区是分开的。
我们修改规则为:
alert http any any -> any any (msg:”ImageMagick RCE”;flow:established,to_server; content:”123 456″;http_uri; classtype:vinc; sid:1000002; rev:1;)
在content后添加http_uri;
这是看snorby的报警发现依然是URL编码的,但是匹配规则的时候已经解码了。因为只是针对于uri,所以post的内容是无法url解码的。
参考文章:http://jasonish-suricata.readthedocs.io/en/latest/rules/http-uri-normalization.html

1)安装:
根据官方文档:
1、wget http://www.openwall.com/john/j/john-1.8.0.tar.gz
2、tar xzvf john-1.8.0.tar.gz
3、cd john-1.8.0
4、cd src
5、make
6、make clean generic
2)Linux下的使用方法
1、cd ../run/
2、cp /etc/passwd /etc/shadow . //注意后面一个. 说明是复制到当前目录
3、./unshadow passwd shadow >mypasswd
4、./john mypasswd
####################################################
但是执行报错
[root@server120 run]# ./john mypasswd
No password hashes loaded (see FAQ)
解决办法如下
1、cd src
2、make
3、make linux-x86-64
####################################################
3)破解模式
-single
假如账户名是admin,它的密码是admin+一些数字像123,000等,我们就可以采用这种破解模式,在john.conf中的[List.Rules:Single]中定义规则。
john –single mypasswd
可以加载多个密码文件
john –single passwd1 passwd2
或者john –single *passwd* *.pwd
-wordlist
采用字典进行破解,字典在/john-1.*/run/password.lst,可以手工生成一个字典加载到里面
[root@server120 run]# ./john –wordlist=password.txt mypasswd
Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
Press ‘q’ or Ctrl-C to abort, almost any other key for status
hehe123 (vincent)
1g 0:00:00:00 100% 11.11g/s 33.33p/s 66.66c/s 66.66C/s xyxyxyxyx..hehe123
Use the “–show” option to display all of the cracked passwords reliably
Session completed
查看结果
[root@server120 run]# ./john –show mypasswd
vincent:hehe123:501:501::/home/vincent:/bin/bash

1 password hash cracked, 1 left
可以开启字典规则变化功能–rules,例如针对单词cook,会尝试cook、c00k、cooker等其他单词,详细的规则记录在[List.Rules:Wordlist]中
-increasemental
这个破解模式会尝试所有的字符组合,然后作为密码来破解,当然时间是相当久的。
-external
这个可以加载c语言等写的程序,通过这个程序进行破解。
如果直接执行./john mypasswd会先尝试single crack,然后尝试字典破解,最后尝试字符穷举破解。

参考文章:http://www.openwall.com/john/doc/EXAMPLES.shtml

经常在服务器提权的时候,尤其是windows环境下,我们发现权限不高,却可以读取mysql的datadir目录,并且能够成功下载user.MYD这个文件。
将服务器上以下三个文件拷贝到本地。
[root@server120 run]# cd /var/lib/mysql/mysql/user.
user.frm user.MYD user.MYI
然后重启Mysql服务
[root@vincenthostname tmp]# service mysqld stop
停止 mysqld: [确定] [root@vincenthostname tmp]# /usr/bin/mysqld_safe –skip-grant-tables &
[1] 55085
[root@vincenthostname tmp]# 160601 20:39:17 mysqld_safe Logging to ‘/var/log/mysqld.log’.
160601 20:39:17 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
然后就可以查看Hash
mysql> select user,password from user;
+——+——————————————-+
| user | password |
+——+——————————————-+
| root | *381A54AC52B74063187B5D183AB89082B0620C45 |
| root | |
| root | |
| | |
| | |
+——+——————————————-+
5 rows in set (0.01 sec)
然后我们使用cain进制破解
选择Cracker–>Mysql Hasher–>Add to list 添加username和Hash

123

右键点击新增的条目选择第一个字典破解Mysql SHA1 Hashes,然后添加一个字典

123

在“Options(选项)”中一共有8种方式即:
(1)字符串首字母大写
(2)字符串反转
(3)双倍字符串
(4)字符串全部小写
(5)字符串全部大写
(6)在字符串中加入数字
(7)在每个字符串中进行大写轮换
(8)在字符串中加入2个数字
这里我们选择字符串全部小写,破解成功

123

另外Cain还有密文计算器

123

mysql密码加密方式:
MySQL数据库的认证密码有两种方式,
MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之后的版本都是MySQLSHA1加密,
MySQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MySQL数据库里进行查询,前者是MySQL323加密,后者是MySQLSHA1方式加密。
1)以MySQL323方式加密

select old_password('111111');
mysql> select old_password('111111');
+------------------------+
| old_password('111111') |
+------------------------+
| 5fcc735428e45938 |
+------------------------+
1 row in set (0.00 sec)

2)以MySQLSHA1方式加密

mysql> select password('hehe123');
+-------------------------------------------+
| password('hehe123') |
+-------------------------------------------+
| *E2F0F2B44618A79B15A6FD6B0941AC2D7C0173E6 |
+-------------------------------------------+
1 row in set (0.00 sec)

MySQL实际上是使用了两次SHA1夹杂一次unhex的方式对用户密码进行了加密。具体的算法可以用公式表示:password_str = concat(‘*’, sha1(unhex(sha1(password)))) 我们可以用下面的方法做个简单的验证。

mysql> select password('mypassword'),concat('*',sha1(unhex(sha1('mypassword'))));
+-------------------------------------------+---------------------------------------------+
| password('mypassword') | concat('*',sha1(unhex(sha1('mypassword')))) |
+-------------------------------------------+---------------------------------------------+
| *FABE5482D5AADF36D028AC443D117BE1180B9725 | *fabe5482d5aadf36d028ac443d117be1180b9725 |
+-------------------------------------------+---------------------------------------------+
1 row in set (0.00 sec)

MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中*是不加入实际的密码运算中,通过观察在很多用户中都携带了”*”,在实际破解过程中去掉”*”,也就是说MySQLSHA1加密的密码的实际位数是40位。