# Test
**Repository Path**: uzju/test
## Basic Information
- **Project Name**: Test
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-06
- **Last Updated**: 2021-06-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 第三方图片地址钓鱼攻击思路
## 一、前言
> 一、测试前的准备
>
> 钓鱼网站(真实域名与服务器):http://exp.catgames.cn
>
> 恶意图片(真实域名与服务器):http://exp.catgames.cn/ruleimage/1.png
>
> 正常网站(本地phpstudy改hosts):http://www.security.uzju.com/
>
> 二、版本信息
>
> phpstudy(模拟用户正常体验)
>
> 1、php 5.4
>
> Linux宝塔(模拟钓鱼网站)
>
> 1、php 5.6
>
> 2、mysql 5.x
>
> 三、攻击思路图如下
>
>
>
> 四、用户体验页面
>
> 
>
> 五、钓鱼网站
>
> 1、前台
>
> 
>
> 2、后台
>
> 
---
## 二、测试站点与钓鱼站点的搭建
### 1.本地搭建-用户正常访问的测试网站
> 简单的源代码,主要功能就是如果用户点击广告图片,则进行跳转到第三方图片地址

> 本地改HOST访问域名的方式

> phpstudy版本

> 搭建后测试效果,因为在服务端做了跳转,所以无法正常获取到图片。

### 2.服务器搭建-攻击者钓鱼网站
> 这款钓鱼源码网上随便找的,只为模拟钓鱼功能
>
> 将源码传入服务器中的宝塔Linux解压后倒入数据库和修改config



> 任意尝试账号密码进行测试

> 进入后台查看,搭建完成

> 为了能让访问图片就能进行跳转,需要在.htaccess中添加规则

---
## 三、Web层-攻击链测试
> 假设用户访问了http://www.security.uzju.com/
>
> 正常流程为在输入框中输入密钥Key然后完成登陆,可是业务中可能会存在广告图等,导致用户可能会点击广告图,但是web层的攻击在PC端浏览器中复现,实在太过于虚假,手机端测试发现效果也不很近人意,不过不影响复现思路
>
> 用户点击广告图片后,进行302跳转

> 接下来用户就会访问一个跟原站一模一样的钓鱼网站

> 如果用户输入自己的账号密码,攻击者就可以在后台窃取用户账号密码,造成信息的泄露、


---
## 四、APP层-攻击链测试
### 1、安卓APP开发环境搭建
> IntelliJ IDEA 2020.2.3
>
> 参考链接:https://www.baidu.com/s?ie=UTF-8&wd=IDEA%E6%90%AD%E5%BB%BAAPP%E5%BC%80%E5%8F%91
>
> 参考链接1:https://jingyan.baidu.com/article/7908e85ce158e4af481ad2e1.html
### 2、遇到的问题
> Android 9.0是默认禁止所有http请求的,需要在代码中设置如以下代码才可以正常进行网络请求
>
> android:usesCleartextTraffic="true"
>
> 并且需要添加
>
>
#### 2.1、报错截图

#### 2.2、解决方法
> 更改activity_main.xml
```xml
<---add
```
#### 2.3、测试截图

#### 2.4、源代码
```java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
String path = "http://exp.catgames.cn/1.png";
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.btn);
imageView = (ImageView) findViewById(R.id.imageView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bm=getBitmap(path);
Message msg = new Message();
msg.what = 0;
msg.obj = bm;
System.out.println("000");
handle.sendMessage(msg);
}
}).start();
}
});
}
//在消息队列中实现对控件的更改
private Handler handle = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
System.out.println("111");
Bitmap bm=(Bitmap)msg.obj;
imageView.setImageBitmap(bm);
break;
}
};
};
private Bitmap getBitmap(String path) {
Bitmap bm = null;
try {
URL url = new URL(path);//创建一个URL对象,其参数为网络图片的链接地址
//使用一个URL对象开启一个链接
HttpURLConnection con = (HttpURLConnection) url.openConnection();
//设置相关参数
con.setDoInput(true);
con.setConnectTimeout(5000);//设置超时
con.setReadTimeout(2000);
con.connect();
InputStream is = con.getInputStream();//获取输入流
bm = BitmapFactory.decodeStream(is);//将输入流解码为Bitmap对象
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return bm;
}
}
```

### 3、ImageView-模拟攻击测试
#### 1、复现过程与复现结果
+ 首先先看一下用户正常访问
> 这里有个按钮事件,需要点击按钮,不过也可以还原淘宝或者APP商品页面自动加载商品
+ 模拟攻击者恶意替换图片地址
```java
//修改String path参数
String path = "http://exp.catgames.cn/1.png";
//修改为
String path = "http://exp.catgames.cn/imagerule/1.png";
```
> 在GIF中可以看到并不会显示图片,那么在IDEA中可以看一下运行日志

> 查阅资料后可以发现
>
> HTTPConnect获取图片后会获取一个输入流,并将输入流解码为BitMap对象
>
> 
>
> 这里的老外说请将图像字节字符串而不是简单的字符串传递到您的解码器BitMapFactory.decodeStream中,按照老外说的,我们可以尝试打印一下在获取恶意图片跳转链接的时候,输入流是什么样子,BitMap又是什么样子

+ 重新运行APP进行尝试

> 可以很明显的看到BitMap的对象为Null

> 所以在跳转上也是不可能让APP去调用浏览器访问恶意站点
>
> 关于ImageView的测试并没有那么贴近实战环境,对于实战开发中怎么使用了解甚少,但至少可以证明APP原生的内容是不可以跳转的,因为代码里面没有调用浏览器的这个代码,而且就算图片可以点击放大,也只是自定义了图片的放大与缩小的代码。
### 4、WebView-模拟攻击测试
> 由于WebView的代码没找到好的,但是想到了有在线生成的APP
>
> https://app.applebyme.cn/developer/app_build.cshtml?pc=&id=264567
>
> 输入网站地址就可以生成一个APP



> 这样应该是使用的WebView,但是这个左边的菜单栏可能是原生的
>
> 这种方式进行图片跳转然后钓鱼的话,是肯定可以的

##