This commit is contained in:
Yunus AYDIN 2023-11-15 15:49:09 +03:00
Родитель d5f254781e
Коммит 1e915720e9
527 изменённых файлов: 28709 добавлений и 95 удалений

Просмотреть файл

@ -17,13 +17,9 @@ from
Method get
where
httpHandleFuncCall.getTarget().hasQualifiedName("net/http", "HandleFunc") and
httpHandleFuncCall.getNumArgument() > 1 and
httpHandleFuncCall.getArgument(0).getType().getUnderlyingType() = StringType and
httpHandleFuncCall.getArgument(0).getStringValue().matches("%/\"") and
// Trace the second argument's data flow to its predecessor
predecessor = httpHandleFuncCall.getArgument(1).getAPredecessor() and
// Find the corresponding expression for the predecessor
httpHandleFuncCall.getArgument(0).getType().getUnderlyingType() instanceof StringType and
httpHandleFuncCall.getArgument(0).getStringValue().matches("%/") and
get.hasQualifiedName("net/http", "Header", "Set") and
call = get.getACall() and
call.getArgument(0).getStringValue() = "\"Cache-Control\""
call.getArgument(0).getStringValue() = "Cache-Control"
select httpHandleFuncCall.getArgument(0), call.getArgument(0)

Просмотреть файл

@ -1,88 +0,0 @@
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"os/exec"
"strings"
"sync"
)
var sessionMap = make(map[string]string)
var (
templateCache = make(map[string]*template.Template)
mutex = &sync.Mutex{}
)
type Lists struct {
Uid string
UserName string
UserLists []string
ReadFile func(filename string) string
}
func parseTemplateFile(templateName string, tmplFile string) (*template.Template, error) {
mutex.Lock()
defer mutex.Unlock()
// Check if the template is already cached
if cachedTemplate, ok := templateCache[templateName]; ok {
fmt.Println("cached")
return cachedTemplate, nil
}
// Parse and store the template in the cache
parsedTemplate, _ := template.ParseFiles(tmplFile)
fmt.Println("not cached")
templateCache[templateName] = parsedTemplate
return parsedTemplate, nil
}
func ShowAdminPageCache(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
fmt.Println("cache called")
sessionMap[r.RequestURI] = "admin"
// Check if a session value exists
if _, ok := sessionMap[r.RequestURI]; ok {
cmd := "mysql -h mysql -u root -prootwolf -e 'select id,name,mail,age,created_at,updated_at from vulnapp.user where name not in (\"" + "admin" + "\");'"
// mysql -h mysql -u root -prootwolf -e 'select id,name,mail,age,created_at,updated_at from vulnapp.user where name not in ("test");--';echo");'
fmt.Println(cmd)
res, err := exec.Command("sh", "-c", cmd).Output()
if err != nil {
fmt.Println("err : ", err)
}
splitedRes := strings.Split(string(res), "\n")
p := Lists{Uid: "1", UserName: "admin", UserLists: splitedRes}
parsedTemplate, _ := parseTemplateFile("page", "./views/admin/userlists.gtpl")
w.Header().Set("Cache-Control", "no-store, no-cache")
err = parsedTemplate.Execute(w, p)
}
} else {
http.NotFound(w, nil)
}
}
func main() {
fmt.Println("Vulnapp server listening : 1337")
http.Handle("/assets/", http.StripPrefix("/assets/", http.FileServer(http.Dir("assets/"))))
http.HandleFunc("/adminusers", ShowAdminPageCache)
err := http.ListenAndServe(":1337", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

Просмотреть файл

@ -0,0 +1 @@
{"languages":{"go":{"displayName":"Go","files":["WebCacheDeceptionBad.go"],"linesOfCode":63,"name":"go"}}}

Просмотреть файл

@ -0,0 +1,10 @@
---
sourceLocationPrefix: /Users/yunus.aydin/Research/codeql-fork/go/ql/src/experimental/CWE-525
baselineLinesOfCode: 63
unicodeNewlines: false
columnKind: utf8
primaryLanguage: go
creationMetadata:
cliVersion: 2.15.2
creationTime: 2023-11-15T12:38:41.355081Z
finalised: true

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/array_length.rel Normal file

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/base_type.rel Normal file

Двоичный файл не отображается.

Двоичный файл не отображается.

0
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/.lock поставляемый Normal file
Просмотреть файл

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/buckets/info поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/buckets/page-000000 поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/ids1/info поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/ids1/page-000000 поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/indices1/info поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/indices1/page-000000 поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/info поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/metadata/info поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/metadata/page-000000 поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/0/pageDump/page-000000000 поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/pools/poolInfo поставляемый Normal file

Двоичный файл не отображается.

Двоичные данные
go/ql/src/experimental/CWE-525/wcd/db-go/default/cache/cached-strings/tuple-pool/header поставляемый Normal file

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше