feat: complete basic functions

Support http,dns and mysql connection. Support custom http, dns response. Support dns rebinding.
Support mysql load local files and jdbc deserialize exploit.
This commit is contained in:
Li4n0
2021-04-21 18:55:16 +08:00
parent e9db8ddb24
commit 3559894acc
114 changed files with 41617 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
<template>
<div>
<a-modal
title="Auth with token"
:visible="visible"
:confirm-loading="confirmLoading"
@cancel="cancel"
@ok="auth"
>
<a-input v-model.lazy="token" placeholder="Your token"/>
</a-modal>
</div>
</template>
<script>
import {store} from "@/main";
import {ping} from "@/api/ping"
export default {
data() {
return {
confirmLoading: false,
token: localStorage.getItem("token")
};
},
computed: {
visible: function () {
return !store.authed
},
},
watch: {
token: function (val) {
localStorage.setItem("token", val)
}
},
methods: {
auth() {
this.confirmLoading = true;
ping().then(() => {
store.authed = true;
this.confirmLoading = false;
}).catch(e => {
if (e.response.status === 403) {
this.$notification.error({
message: 'Wrong token',
description:
'Your token is wrong, please check your server config file.',
style: {
width: '600px',
marginLeft: `${335 - 600}px`,
},
duration: 2.5
});
}
this.confirmLoading = false;
})
},
cancel() {
store.authed = true;
}
},
};
</script>
+103
View File
@@ -0,0 +1,103 @@
<template>
<div>
<a-row :gutter="24">
<a-col :span="24">
<a-form-model-item label="Name" :rules="rules.name" prop="name">
<a-input v-model="form.name"
placeholder="Please enter rule name"
:readOnly="readOnly"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<a-form-model-item :rules="rules.flagFormat" prop="flag_format">
<span slot="label">
Flag Format&nbsp;
<a-tooltip title="1. Only when the request contains content that satisfies the flag format, the request will be captured.
2. Please use regular expression syntax.
3. The character '*' means to capture all requests.
4. Advanced usage: When the format uses grouping, the platform will only notify the user or push to the client when the first group appears for the first time.">
<a-icon type="question-circle-o"/>
</a-tooltip>
</span>
<a-input
v-model="form.flag_format"
style="width: 100%"
placeholder="please enter flag format"
:readOnly="readOnly"
/>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<a-form-model-item prop="rank">
<span slot="label">
Rank
<a-tooltip title="When request match multiple rules, high-rank rules will be matched first">
<a-icon type="question-circle-o"/>
</a-tooltip>
</span>
<a-input-number style="width: 100%"
v-model="form.rank"
v-decorator="['rank']"
:disabled="readOnly"
placeholder="0"
>
</a-input-number>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-model-item>
<div class="ant-form-item-label">
<label for="push-to-client">Push to Client
<a-tooltip placement="topLeft" title="Whether push to client when capture flag with this rule.">
<a-icon type="question-circle"/>
</a-tooltip>
</label>
</div>
<a-switch v-model="form.push_to_client" id="push-to-client" :disabled="readOnly"/>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item>
<div class="ant-form-item-label">
<label for="notice">Notice
<a-tooltip placement="topLeft" title="Whether notice with bot when capture flag with this rule.">
<a-icon type="question-circle"/>
</a-tooltip>
</label>
</div>
<a-switch v-model="form.notice" id="notice" :disabled="readOnly"/>
</a-form-model-item>
</a-col>
</a-row>
</div>
</template>
<script>
export default {
name: "BasicRule",
data() {
return {
rules: {
name: [
{required: true, message: 'Please input rule name', trigger: 'blur'},
],
flagFormat: [
{required: true, message: 'Please input flag format', trigger: 'blur'},
]
},
}
},
props: ['form', 'readOnly']
}
</script>
<style scoped>
</style>