InfoSec Learning


  • 首页

  • 归档

  • 标签

  • 搜索

raven(mysql-udf提权)

发表于 2018-12-11 | 分类于 training

port scan

1
2
3
4
22/tcp  open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
80/tcp  open  http    Apache httpd 2.4.10 ((Debian))
111/tcp open  rpcbind 2-4 (RPC #100000)
OS details: Linux 3.2 - 4.8

有点眼熟,rpcbind,以前遇到过

阅读全文 »

Mysql数据库-sql injection(二)

发表于 2018-12-05 | 分类于 web

案例七:

192.168.2.131/sqli/example7.php?id=2

1

现在有一个问题,不知道背后的mysql语句到底过滤了什么,黑盒测试的话,就不知道如何针对性地绕过。


源代码

1
2
3
if (!preg_match('/^-?[0-9]+$/m', $_GET["id"])) {
  die("ERROR INTEGER REQUIRED");    
}

知识点:preg_match()函数的模式修饰符

1
2
3
_m_ (_PCRE_MULTILINE_)

默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), "行首"元字符 (^) 仅匹配字符串的开始位置, 而"行末"元字符 ($) 仅匹配字符串末尾, 或者最后的换行符(除非设置了 _D_ 修饰符)。这个行为和 perl 相同。 当这个修饰符设置之后,“行首”和“行末”就会匹配目标字符串中任意换行符之前或之后,另外, 还分别匹配目标字符串的最开始和最末尾位置。这等同于 perl 的 /m 修饰符。如果目标字符串 中没有 "\n" 字符,或者模式中没有出现 ^ 或 $,设置这个修饰符不产生任何影响。

所以,有了这个\m,如果加入换行符,那么就会导致匹配(换行符之前/之后/整个字符串)。


好了,现在问题解决了,主要是我建立的字典不够强大。 所以之前用intruder没有发现。 2

sqlmap -u "http://192.168.2.131/sqli/example7.php?id=2" --dbms mysql --tamper=space2newline.py --dbs

案例八-order-by:

http://192.168.2.131/sqli/example8.php?order=name

经过检查,只有#符号无影响,其他都导致页面查询失败。

知识点

order by是排序的语句,单引号不能跟order by同时使用。

‘name’ ,mysql会认为是常量。

我们看一条mysql语句

1
SELECT * FROM `MyTable` WHERE `id` IN (11,1,111) ORDER BY FIELD(`id`, 11,1,111);

尝试绕过

apostrophemask.py 用utf8代替引号 base64encode.py 将payload编码

sqlmap -u "http://192.168.2.131/sqli/example8.php?order=name" --dbms mysql --tamper=base64encode.py --dbs

sqlmap -u "http://192.168.2.131/sqli/example8.php?order=name" --dbms mysql -technique B --level 5

解析

绕不过了,然后看下答案。

如何确认order by注入?

下列语句,网页显示正常

1
2
3
order=age`%20DESC%20%23 
order=age`%20%23 
order=age`%20ASC%20%23

加入`符号,网页显示错误。

%20ASC、%20DESC,表示升序排序、降序排序。

如何利用order by注入,参考资料;

中关村在线order by语句的盲注思路的分享(wooyun)

wp

sqlmap -u "http://192.168.2.131/sqli/example8.php?order=id%60*" --dbms mysql --dbs --batch

–batch 当询问是否确定的时候,自动确定

%60是反引号,后接*,表示payload加在此处。

6


案例九-order-by:

sqlmap -u "http://192.168.2.131/sqli/example9.php?order=name" --dbms mysql -technique B --level 5

3

分析

虽然工具注入成功了,但还是分析一下。否则以后再遇到,只是碰运气,万一注入失败了,也不知道是哪里出错了。

mysql的if语句。

if(a,b,c) 如果a表达式为true,则运行表达式b;a = false,则运行表达式c。

4 5

两种注入语句,返回页面不同,说明有注入。

阅读全文 »

SolidState(**Java Apache Mail server命令执行**)

发表于 2018-12-02 | 分类于 training

SolidState(Java Apache Mail server命令执行)

target machine download

阅读全文 »

Mysql数据库-sql injection

发表于 2018-11-22 | 分类于 web

案例一:

http://192.168.2.131/sqli/example1.php?name=root

阅读全文 »

常见web漏洞-command execution

发表于 2018-11-18 | 分类于 web

资料下载:pentesterLab download

阅读全文 »

2019年学习计划

发表于 2018-11-15 | 分类于 experience

18年11月的时候,去找渗透测试的实习。以我半吊子的水平,当然还是不够的(==) linux靶机 上图是去年的渗透实践。

阅读全文 »

vnc远程桌面

发表于 2018-11-12 | 分类于 tools

参考资料

阅读全文 »

LTR Scene(php写入一句话+sudoer提权)

发表于 2018-11-10 | 分类于 training

以前的步骤经常看到一个感兴趣的点,然后就一直死磕ORZ

阅读全文 »

如何寻找一家靠谱的公司

发表于 2018-11-09 | 分类于 View

学网络安全也有3年了== 从啥也不会的小白到各方面略懂一点的script kiddie。 网络安全cyber security,分支那么多。 到有幸到black hat ctf 加大佬微信问入行经验,我要是还不明白发展方向,不如找块豆腐撞死得了。

阅读全文 »

Lampiao(dirtycow)

发表于 2018-11-04 | 分类于 training

参考资料:linux 提权脚本

阅读全文 »

mr robots(escalation privilege)

发表于 2018-11-02 | 分类于 training

上一篇

通过这篇文章,学习shell脚本获取提权信息

nikto -host 192.168.1.135

1 WordPress/4.3.1


研究一下CVE-2017-8295:密码重置

https://exploitbox.io/vuln/WordPress-Exploit-4-7-Unauth-Password-Reset-0day-CVE-2017-8295.html

wordpress未授权密码重置

1
2
3
4
5
6
As we can see, Wordpress is using SERVER_NAME variable to get the hostname of
the server in order to create a From/Return-Path header of the outgoing password
reset email.
However, major web servers such as Apache by default set the SERVER_NAME variable
using the hostname supplied by the client (within the HTTP_HOST header):
这个cms在创建密码重置邮箱的时候,用到了主机名这个变量,而apache这种服务器,是使用客户提供的http主机头文件作为“主机名变量”

客户提供的http_host header 2 如果我们把这个变量改为“attackers-mxserver.com”,wordpress的“$from_email”变量为”wordpress@attackers-mxserver.com“

3

查找了一下不能发邮件的原因,==缺少了插件wp-mail-smtp。 http://www.jamesandchey.net/wordpress-the-e-mail-could-not-be-sent-possible-reason-your-host-may-have-disabled-the-mail-function/

好吧,就研究到这里,如果这个目标机有好好配置的话,是可以通过未授权密码重置,得到密码的。


研究一下shell脚本SUID检查

nmap并没有写在环境变量中,所以直接调用nmap是not found。 在这个靶机中,nmap很鸡贼地藏在/usr/local/bin/路径下。 nmap version 3.81,低版本的nmap可以以执行root 12

执行一下脚本,即可获取有SUID权限的二进制文件。

1
2
3
4
#!/bin/bash
cd /tmp
find / -perm -4000 2>/dev/null > examSUID.txt
cat examSUID.txt | grep -E "nmap|vim|find|bash|more|less|nano|cp"

script还很简陋,以后再优化优化。

阅读全文 »

初识php反序列化

发表于 2018-11-01

php反序列化

参考资料:Understanding PHP Object Injection

php基础提要: 图1

php允许保存一个对象方便以后重用,这就是序列化。 场景:变量值需要跨脚本传递。

序列化

反序列化

下面演示php反序列化。 建立logfile.php(定义了一个类,可以进行文件删除),use.php(使用这个类,生成序列化字符串)。 1.php(之后演示删除该脚本) test.php(接受序列化字符串,删除1.php)

logfile.php定义了一个类,可以进行文件删除操作

use.php指定了一个文件,进行删除。 O:7:"LogFile":1:{s:8:"filename";s:5:"1.php";} 复制生成的这个序列,之后要用到。

之后,建立一个test.php,其中定义一个新的类 User。 此时图一建立的1.php还存在。 捕获 6 捕获 7 划重点,test.php因为接受了用户给出的变量usr_serialized,而用户的输入不可控。导致php脚本解析并执行了删除1.php的操作。

而test.php本来设计的功能,是传递“O:4:”User”:2:s:3:”age”;i:20;s:4:”name”;s:4:”John”;}”

于是页面会显示“User John is 20 years old.”

在跨页面传递变量的时候,没有设计好,就导致了这个命令执行。

阅读全文 »
1 … 17 18 19 … 34
whale

whale

Aimed at Pro Penetration tester. Email me "weaponmaster3070@gmail.com"

408 日志
35 分类
48 标签
github
© 2021 whale
由 Jekyll 强力驱动
主题 - NexT.Mist
本站访客数 人 总访问量 次